当前位置: 首页 > 面试题库 >

通过go test跳过一些测试

夏侯兴学
2023-03-14
问题内容

是否可以跳过/排除某些测试的运行go test

我有大量的集成类型测试,这些调用称为标准服务测试编写的rest服务,并使用运行go test。开发新功能时,有时可以跳过某些测试,例如,如果该新功能尚未部署在测试服务器上,并且我仍想运行所有现有测试(那些进行测试的新测试除外),则有时会有用新功能)。

我知道-run,但是我不想指定我要运行的所有测试,那将是一长串。同时,我无法编写排除测试的正则表达式。

另一个选择是不提交不在同一分支中运行的测试,但是如果我仅指定要排除的内容,则会更容易。


问题答案:

就像VonC所说的,您可以使用+build标签

┌─ oneofone@Oa [/t/tst-tag]                                                                                                      
└──➜ ls
a_test.go  b_test.go  c_test.go

a_test.go:

package tags

import "testing"

func TestA(t *testing.T) {}

b_test.go:

// +build !feature1

package tags

import "testing"

func TestB(t *testing.T) {}

c_test.go:

// +build !feature1
// +build !feature2

package tags

import "testing"

func TestC(t *testing.T) {}

然后使用-tags参数运行测试:

┌─ oneofone@Oa [/t/tst-tag]                                                                                                      
└──➜ go test -v . | grep PASS:
--- PASS: TestA (0.00 seconds)
--- PASS: TestB (0.00 seconds)
--- PASS: TestC (0.00 seconds)
┌─ oneofone@Oa [/t/tst-tag]                                                                                                      
└──➜ go test -v -tags feature1 . | grep PASS:
--- PASS: TestA (0.00 seconds)
┌─ oneofone@Oa [/t/tst-tag]                                                                                                      
└──➜ go test -v -tags feature2 . | grep PASS:
--- PASS: TestA (0.00 seconds)
--- PASS: TestB (0.00 seconds)

//更新:不同的逻辑:

a_test.go:

// +build all

package tags

import "testing"

func TestA(t *testing.T) {}

b_test.go:

// +build all feature1

package tags

import "testing"

func TestB(t *testing.T) {}

c_test.go:

// +build all feature2

package tags

import "testing"

func TestC(t *testing.T) {}


┌─ oneofone@Oa [/t/tst-tag]                                                                                                      
└──➜ go test -v -tags all | grep PASS:
--- PASS: TestA (0.00 seconds)
--- PASS: TestB (0.00 seconds)
--- PASS: TestC (0.00 seconds)
┌─ oneofone@Oa [/t/tst-tag]                                                                                                      
└──➜ go test -v -tags feature1 | grep PASS:
--- PASS: TestB (0.00 seconds)
┌─ oneofone@Oa [/t/tst-tag]                                                                                                      
└──➜ go test -v -tags="feature1 feature2" | grep PASS:
--- PASS: TestB (0.00 seconds)
--- PASS: TestC (0.00 seconds)

或者您通过名称调用特定的测试,例如:

d_test.go:

package tags

import "testing"

func TestA1(t *testing.T) {}
func TestB1(t *testing.T) {}
func TestC1(t *testing.T) {}
func TestD1(t *testing.T) {}

输出:

┌─ oneofone@Oa [/t/tst-tag]                                                                                                      
└──➜ go test -run="(A|B)1" -v | grep PASS:
--- PASS: TestA1 (0.00 seconds)
--- PASS: TestB1 (0.00 seconds)
┌─ oneofone@Oa [/t/tst-tag]                                                                                                      
└──➜ go test -run="D1" -v | grep PASS:
--- PASS: TestD1 (0.00 seconds)


 类似资料:
  • 问题内容: 是否可以跳过测试目录。例如,鉴于下面的结构,是否可以测试mypackage,mypackage / other和mypackage / net,但不能测试mypackage / scripts?我的意思是无需为每个脚本编写go test命令(例如,去测试;去测试网;去测试其他) 问题答案: Go test带有要在命令行上测试的软件包列表(请参阅参考资料),因此您可以通过一次调用来测试任

  • 我正在使用Maven 2.2.1,为了构建我的项目,我使用了以下命令 但是,构建失败了,说它找不到一个工件。然而,当我使用: 一切正常。 到目前为止,我一直认为这两个命令是等效的。然而,这个链接似乎表明,Dmaven。测验skip=true也会跳过编译测试用例。 然而,这仍然不能向我解释为什么一个命令有效,而另一个命令无效。如果有人能向我解释这一点,我将不胜感激。

  • 我正在寻找一种方法来跳过多构建项目中某个项目的测试。我不想使用gradle构建-x测试,因为这样它将跳过所有子项目的测试。 根 子P1 build.gradle 构建。格拉德尔 构建。格拉德尔 我只想跳过“Sub P3”的测试 我可以将项目(子P3)生成文件配置为跳过测试吗?

  • 我正在使用TestNG数据提供程序读取数据池。xls文件,在名为ReadData的类中包含1017个测试用例和214列。 然后,我将214个String参数传递到名为Enterprise Data的单独类中的@Test注释中。 我在@Test中创建了一个for循环,只执行ceratin迭代的操作(比如1-10),它总共只输入10个测试用例。我的问题是,在运行结束时,它仍然显示“Total test

  • 通过maven运行selenium测试时,它会自动跳过我的一个测试并很好地运行其他测试。不确定为什么maven的bcos默认行为是不跳过测试。尽管添加了

  • 我们有一个非常简单的Kafka Consumer(v 2.6.2)。它是使用者组中唯一的使用者,并且该组是唯一一个阅读主题的组(有6个分区,其中有大约300万个事件)。Broker也是2.6.x版本 由于我们需要实现一个“只有一次”的场景,我们深入研究了一下,如果我们真的只使用一次写入主题的每个事件。不幸的是,我们发现:消费者有时会跳过一个偏移量,有时甚至会跳过一组分区的偏移量。 消费者除了记录之