filter:
如果传入空字符串:“”,不会执行任何测试用例,并不会执行所有
要想执行所有,过滤需要使用“*”,或者使用所有测试案例的共性
disabled:
如果是TEST宏控制的测试用例,直接在测试方法名上加“DISABLED_”即可,
如果是TEST_F或者TEST_P控制的测试用例,也可以在测试方法名加上“DISABLED_”,只把此用例设置无效,不影响同一套件下的其它测试用例;
如果想把整个类的测试用例全部置为无效,需要把测试套件名前加上“DISABLED_”,相对应的测试用例前面也都要加上“DISABLED_”
查看命令
./clientTest --help
已经把所有的测试用例加上了“ICVP”,为什么过滤条件为“”与过滤条件为“ICVP”,检测出来的测试用例数不一致:
filter: ICVP:Running 62 tests from 9 test suites.
filter: : Running 68 tests from 10 test suites
一、TEST 有两个参数 : test case name 和 test name。test需要归类到test cases。例如: TEST(FactorialTest, Negative) 中 test is named “Negative”, “FactorialTest” 是test case name 。test cases中的test执行是没有顺序的。
二、test fixture :
test fixture只是保存了一个对象或者函数,供其他tests共享使用。 test fixture只是代码共享,资源并不共享。每个test都会拷贝一份fixture使用。 比如说都要访问某个数据库的某张表,比如说都需要起浏览器,都需要调用post方法等。 这个时候每个测试用例单独写就显得很多余,TestFixture就应运而生。
gtest:不可以控制用例执行顺序
死亡测试用例除外,编写死亡测试案例时,TEST的第一个参数,即testcase_name,请使用DeathTest后缀。原因是gtest会优先运行死亡测试案例,应该是为线程安全考虑。
七、死亡测试运行方式
- fast方式(默认的方式)
testing::FLAGS_gtest_death_test_style = “fast”;
2. threadsafe方式
testing::FLAGS_gtest_death_test_style = “threadsafe”;
SetUpTestCase
SetUpTestCase以及TearDownTestCase完全独立,不可以包含类中所定义的其它变量或者方法,否则会报错
eg:
class jj{
int err=-1;
static void SetUpTestCase() {
err=interface();//错误,不可以使用类中的变量
}
};
GTEST并不是完全不可以控制用例执行顺序,从一个suite的用例按照从上到下得顺序执行