gtest:在 2 个 TEST_Fs 内运行 TEST_P

大卫·霍夫斯皮恩

我有三个测试:

TEST_F(lexer, no_data)
{
    // some initial test
}

INSTANTIATE_TEST_CASE_P(parser, lexer, ::testing::Values(/*some list of values*/));
TEST_P(lexer, with_data)
{
    // fixture's static member initialization.
    // tests for each input value
}

TEST_F(lexer, no_more_data)
{
    // final test
}

问题是,当我运行 test 时,它TEST_F在开始时运行s 然后运行TEST_P,但我需要先运行s TEST_F,然后TEST_P是每个输入的 s ,最后是最新的TEST_F. 注意:在夹具中,我有一个用于所有测试用例的静态成员,但我需要在运行时先取消该成员的初始化TEST_F

卡戎X

简短的回答:你不能。你不应该。

稍微长一点的回答:
有你的测试彼此依赖(或者它们的执行顺序)是一个非常糟糕的主意-正是由于这个原因googletest(和Visual Studio中的谷歌测试适配器),甚至提供的选项洗牌测试用例执行顺序,因此在每次测试运行中,您都会获得一个新订单,只是为了捕获否则会隐藏的错误,例如

测试用例 #2 涵盖了Foo()应该(除其他外)将全局标志设置Bartrue.
您检查Bar测试结束时的状态,即true测试通过。

测试用例 #5 涵盖了Baz()应该(除其他外)还将全局标志设置Bartrue. 但是,Baz()有一个错误,并没有这样做。Bar在测试结束时检查该状态...这是true因为它已经在测试用例 #2 中设置,并且测试通过 - 您未能检测到错误。

确保您的每个测试用例都可以彼此独立运行

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TEST,TEST_F和TEST_P有什么区别?

如何在Google Test(gtest)中使用夹具成员值运行参数化测试?

在Google Test参数化测试用例(`TEST_P`)中访问测试信息

GTEST:如何将数组列表作为INSTANTIATE_TEST_CASE_P的ValuesIn中的参数传递?

如何获取gtest TYPED_TEST参数类型

我该如何将gtest testing :: Test归类?

在gtest中未定义对test :: internal :: EqFailure的引用

使用GTest的C ++多个参数TYPED_TEST

gtest –– 使用 TEST_F 时未定义的符号

包含在 2 个 gtest 文件中的静态内联关联集合引发读取访问冲突

gtest DEATH_TEST抱怨fork()和线程,但是只有找到的线程已经加入

通过某些GTest TEST_F的CLion执行挂起,逐步调试会倒退吗?

运行20个@Test方法后如何打印平均时间?

在R中的参数值范围内运行2个参数的函数

Angular 2:当用户在可编辑字段内单击时运行一个函数

基于两个过滤器过滤Gtest

TestNG:方法需要2个参数,但@Test批注中提供了0个

如何比较分别存储在脚本test.py(Python)中2个不同函数中的2个字典

如果py.test在覆盖范围内运行,是否可以跳过该测试?

为什么test1()的运行速度比test2()快?

使2个功能同时运行

在Sphinx上运行2个进程

通过PHP运行2个Mysql查询

使用 join 无限运行 2 个线程

如何永远运行2个异步功能?

无法运行2个子进程

在Docker中运行2个Wordpress安装

Makefile:如何运行2个不同的Shell?

运行 2 个 composer.json 文件