A*******e 发帖数: 2419 | 1 比如有这样一个类。
class Foo {
public:
void A() {
Helper();
...
}
void B() {
Helper();
...
}
private:
void Helper() {
// complicated logic
}
};
A和B共享了复杂代码。写unit tests时,需要对A和B分别写一套测试吗?如此很多工作
都重复了。
还有一个办法是让Helper public,单独写针对Helper的测试,简化A和B的测试。可是
这样需要假定用户知道A和B的实现都是依赖于Helper,违背了写测试只针对接口,不针
对实现的原则。
或者干脆把Helper提取出来作为一个类,然后A和B的数据成员使用这个类。如此解决了
上一个想法里的问题,但这样似乎又过于复杂。
大家是怎么处理这种情况的? |
N*****m 发帖数: 42603 | 2 c++?可以用gtest的friend_test
【在 A*******e 的大作中提到】 : 比如有这样一个类。 : class Foo { : public: : void A() { : Helper(); : ... : } : void B() { : Helper(); : ...
|
d****i 发帖数: 4809 | 3 Re 这个,利用友元函数可以access私有成员函数的特点,在类里面加上
#ifdef _TEST
friend class MyUnitTest;
#endif
【在 N*****m 的大作中提到】 : c++?可以用gtest的friend_test
|
A*******e 发帖数: 2419 | 4 这个只是怎么访问Helper的问题。
我的问题是,假定Helper已经充分测试,如何测试A和B?
如果是纯黑箱测试,用户不知道A和B里都调用了Helper,并且Helper已经充分测试,是
否应该各写一套,分别测试A和B?其中有关Helper的测试用例都重复出现。
【在 N*****m 的大作中提到】 : c++?可以用gtest的friend_test
|
N*****m 发帖数: 42603 | 5 除了Helper,A和B有其他不同的复杂逻辑吗?
【在 A*******e 的大作中提到】 : 这个只是怎么访问Helper的问题。 : 我的问题是,假定Helper已经充分测试,如何测试A和B? : 如果是纯黑箱测试,用户不知道A和B里都调用了Helper,并且Helper已经充分测试,是 : 否应该各写一套,分别测试A和B?其中有关Helper的测试用例都重复出现。
|
A*******e 发帖数: 2419 | 6 剩下的逻辑很简单。
【在 N*****m 的大作中提到】 : 除了Helper,A和B有其他不同的复杂逻辑吗?
|