是否可以将测试用例存储在相应的类中? (C ++)

时间:2009-06-23 22:39:22

标签: c++ unit-testing

我已经开始在我想要测试的类中将测试编写为静态函数。这些函数通常测试功能,它们创建大量对象,测量内存消耗(检测泄漏)等等。

这是好的还是坏的做法?从长远来看,它会咬我吗?

6 个答案:

答案 0 :(得分:3)

我将它们分开,因为我不希望测试类包含在可部署工件中。没有必要增加.exe的大小或让它们可供客户使用。

我建议使用CppUnit编写单元测试。

答案 1 :(得分:1)

不,你应该改为unit tests

答案 2 :(得分:1)

我会说这不是最佳做法,但它是“好的”,因为它不会破坏你的程序或导致它崩溃。有很多事情可以做,但你不应该这样做。

答案 3 :(得分:1)

在所有权,部署,非功能性要求等方面,测试代码与生产代码根本不同。因此,最好将它与被测试的代码分开,在单独的文件中,甚至可能在不同的目录中。

为了便于测试中的类的白盒单元测试,您经常需要将测试类/测试函数声明为朋友。有些课程只对公众成员进行单元测试,因此并不总是需要添加朋友。

将测试代码与测试代码结合起来非常简单:只需在同一个项目中将目标文件链接在一起。

有时您可以看到#include正在测试的代码的单元测试代码,但我建议不要这样做 - 例如,如果你有测试覆盖率测量工具(强烈推荐!),那么措施就赢了“对于被测代码是正确的。

答案 4 :(得分:1)

如果你的班级里面有你的测试用例,就很难有像固定装置这样的东西。

我也要向Boost.Test大声喊叫。学习曲线有点高,但是一旦你习惯了它就会很棒。

答案 5 :(得分:0)

这是不好的做法。

您应该有一个单独的类来测试您正在创建的类。你正在做的事情是使用测试代码膨胀生产代码。这不是你应该做的。

你想要测试类Foo的方式是这样的:

//Foo.cpp
class Foo {
  public:
     int GetInt() { return 15; }
};

//FooTest.cpp
TEST(FooTest, testGetIntShouldReturn15) {
   Foo foo;
   ASSERT_EQUAL(15, foo.GetInt());
}