CPPUNIT创建一个简单的测试
CppUnit creating a simple test
首先,如果我想设置类似:
的测试,则使用了什么类class MyClassTests
setup()
teardown()
testDoingSomething()
testDoingA()
似乎要使用的课程是测试套件吗?
所以现在我创建了一个非常简单的类:
# ParserUnitTests.h
#include <cppunitTestFixture.h>;
#include <cppunitextensionsHelperMacros.h>
class ParserUnitTests : public CppUnit::TestFixture {
public:
void testCanDoUnitTest();
};
及其相应的CPP:
#include "ParserUnitTests.h"
CPPUNIT_TEST_SUITE(ParserUnitTests);
void ParserUnitTests::testCanDoUnitTest() {
CPPUNIT_ASSERT_EQUAL(1, 2, "Expected failure");
}
CPPUNIT_TEST(ParserUnitTests::testCanDoUnitTest);
我在 CPPUNIT_TEST_SUITE
行上遇到的错误,例如" 期望声明" ...似乎与我来自...更现代的语言...像JS/Python一样大不相同。。似乎这里更明确?我必须告诉CPPUNIT要运行哪些类/测试用例?好的,但是是什么原因导致错误?
cppunit食谱中的代码主要是snipplet,很难弄清楚所需的进口,应该去什么?也许有人可以指导我?
带有一些小更改,您的代码应起作用。
// ParserUnitTests.h
#include <cppunitTestFixture.h>;
#include <cppunitextensionsHelperMacros.h>
class ParserUnitTests : public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(ParserUnitTest);
CPPUNIT_TEST(testCanDoUnitTest);
CPPUNIT_TEST_SUITE_END();
public:
void testCanDoUnitTest();
};
CPPUNIT_TEST_SUITE_REGISTRATION( ParserUnitTest );
和
// ParserUnitTests.cpp
#include "ParserUnitTests.h"
void ParserUnitTests::testCanDoUnitTest() {
CPPUNIT_ASSERT_EQUAL(1, 2, "Expected failure");
}
那么您只需要一个主(我只是从cppunit食谱中复制的)
// main.cpp
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/ui/text/TestRunner.h>
int main()
{
CppUnit::TextUi::TestRunner runner;
CppUnit::TestFactoryRegistry ®istry = CppUnit::TestFactoryRegistry::getRegistry();
runner.addTest( registry.makeTest() );
bool wasSuccessful = runner.run();
return !wasSuccessful;
}
因此,唯一的更改是您需要在testfixture声明中的标头文件中声明测试套件。
这就是我使用cppunit的方式:
#include "MyClass.hpp"
struct callable
{
void operator()()
{
}
};
class MyClassTest : public CppUnit::TestCase
{
public:
void testEquality()
{
CPPUNIT_ASSERT(1 == 1);
}
void testCreation()
{
MyClass<callable>* tp = new MyClass<callable>(1);
CPPUNIT_ASSERT(tp->done() == true);
delete tp;
}
static CppUnit::Test* suite()
{
CppUnit::TestSuite* suiteOfTests = new CppUnit::TestSuite("MyClassTest");
suiteOfTests->addTest(new CppUnit::TestCaller<MyClassTest>("testEquality",
&ThreadPoolTest::testEquality));
return suiteOfTests;
}
};
和:
#include <cstdlib>
#include <iostream>
#include <limits>
#include <cppunit/ui/text/TestRunner.h>
#include <cppunit/XmlOutputter.h>
#include <cppunit/TextOutputter.h>
#include <cppunit/TestResult.h>
#include <cppunit/TestResultCollector.h>
#include "MyClass.hpp"
int main(int argc, char** argv)
{
CppUnit::TextUi::TestRunner runner;
runner.addTest(MyClass::suite());
runner.run();
return (EXIT_SUCCESS);
}
主中缺少一些代码,但我简化了它,因此您可以看到重要的位。希望这会有所帮助。
相关文章:
- 在c++中用vector填充一个简单的动态数组
- 如何使用 samtools C API 构建一个简单的主.cpp文件
- 为什么一个简单的程序不能立即启动
- C++ - 在我尝试制作一个简单的计算器时有一个"uninitialized local variable y used"警告
- 为什么 MSVC C++编译器将一个简单的 Hello World 扩展为 4000 行汇编?
- 我写了一个简单的矢量程序,在其中我得到了以下输出。你能帮我理解它的输出吗?
- 如何使用 c++ 在命令行中创建一个简单的字符控制器?
- 对于 ~95% 写入/5% 读取线程安全的无序列图,有没有一个简单的解决方案?
- 在C++中创建一个简单的数据包路由器,如何跟踪"客户端"?
- 创建一个简单的前向迭代器,该迭代器在循环缓冲区的"end"处自动换行
- 我已经安装了用于c++编程的升华3,但在编写了一个简单的程序后,我遇到了以下错误
- 如何设置一个简单的CGAL+Qt程序
- 如何在一个简单的C++项目中使用Poco库
- 我创建了一个简单的程序,但有些地方不对劲
- Qt的新信号/时隙语法问题 - 连接到一个简单的函数
- 一个简单的 win32 多线程代码.这能行吗?
- 我正在尝试构建一个简单的程序来从 mysql 数据库中读取信息
- 创建一个简单的计算器,添加时遇到问题
- 我正在编写一个简单的客户端套接字应用程序,但在连接后服务器收到一个空缓冲区
- 为什么一个简单的"Hello World"风格的程序不能用Turbo C++编译?