为了账号安全,请及时绑定邮箱和手机立即绑定

允许测试结果取决于外部工具的安装

允许测试结果取决于外部工具的安装

Go
拉莫斯之舞 2023-03-21 10:30:05
我正在创建一个 Golang 项目,并且在添加与功能同步的测试方面做得很好。总体思路是我在文件和 git 分支之间执行“语义差异”。对于最新功能,行为取决于是否tree-sitter-cli安装了外部工具 ( ),以及安装了哪些额外功能。如果未安装外部工具(或其可选语法),我希望我的内部函数产生不同的结果。然而,这两个结果都与我的工具 ( sdt) 本身是正确的一致。例如,这是我从另一种没有使用 tree-sitter 分析的编程语言修改而来的测试:func TestNoSemanticDiff(t *testing.T) {    // Narrow the options to these test files    opts := options    opts.Source = file0.name    opts.Destination = file1.name    report := treesitter.Diff("", opts, config)    if !strings.Contains(report, "| No semantic differences detected") {        t.Fatalf("Failed to recognize semantic equivalence of %s and %s",            opts.Source, opts.Destination)    }}各种支持语言的测试在形式上大体相同。然而,在这种情况下,如果缺少外部工具(或不包含该功能),则接收“|没有适用于此格式的语义分析器”的“报告”也将是一个正确的值。问题是,我可以运行代码来确定预期的值;但理想情况下,该代码将“在测试顶部运行一次”,而不是在许多类似测试中的每一个中重新检查。所以我理想中想要的是首先运行某种设置/脚手架,然后让单独的测试编写如下:if !treeSitterInstalled { // checked once at start of test file    if !strings.Contains(report, "appropriate response") { ... }} else if treeSitterNoLangSupport { // ditto, configured once    if !strings.Contains(report, "this other thing") { ... }} else {    if !string.Contains(report, "the stuff where it's installed") { ... }}
查看完整描述

1 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

在您的测试文件中,您可以简单地使用init函数来检查外部依赖性并在同一个文件中设置一个变量,然后可以在各个测试中检查该变量。



查看完整回答
反对 回复 2023-03-21
  • 1 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信