C++ Test里面用一个函数来检查,但是如何让出错的行号显示调用

b
bihai
楼主 (未名空间)

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
bihai

看到C++20有一个,可惜太新了

void Check(A a, const source_location loc = source_location::current())
{
ASSERT_TRUE(a.x, loc.line());
}

【 在 bihai (学得不好) 的大作中提到: 】
: 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
heteroclinic

glibc 的 backtrace
重在参合

h
heteroclinic

glibc 的 backtrace
重在参合