b***i 发帖数: 3043 | 1 class Fixture: public ... {
void Check(a) {
ASSERT_TRUE(a.xx);
ASSERT_FALSE(a.yy);
ASSERT_EQ(a.zz_);
}
};
Test(Fixture, A1) {
A a = ..;
Check(a);
}
Test(Fixture, A2) {
A a(..);
Check(a);
A b(..);
Check(b);
}
调试的时候都显示错在Check代码那些行,看不出到底是哪一行出问题了,比如是a,还
是b。
C++里面有可以显示调用者行号吗?
难道要组合使用__LINE__ ?
void Check(a, string s) {
ASSERT_TRUE(a.xx, s);
ASSERT_FALSE(a.yy, s);
ASSERT_EQ(a.zz_, s);
}
#define EASY_CHECK(a) Check(a, __LINE__)
还有别的办法吗? | b***i 发帖数: 3043 | 2 看到C++20有一个,可惜太新了
void Check(A a, const source_location loc = source_location::current())
{
ASSERT_TRUE(a.x, loc.line());
}
【在 b***i 的大作中提到】 : class Fixture: public ... { : void Check(a) { : ASSERT_TRUE(a.xx); : ASSERT_FALSE(a.yy); : ASSERT_EQ(a.zz_); : } : }; : Test(Fixture, A1) { : A a = ..; : Check(a);
| h**********c 发帖数: 4120 | | h**********c 发帖数: 4120 | |
|