我想使用 Catch 单元测试框架来测试我的项目。我阅读了如何编写测试的教程,它非常简单。我尝试在 QT creator 中创建非常简单的项目,其中包含以下文件:
main.cpp
tests.cpp
factorial.cpp
factorial.h
catch.hpp
主.cpp:
#include <stdio.h>
#include "factorial.h"
int main(void)
{
printf("%d", factorial(5));
return 0;
}
测试.cpp:
#define CATCH_CONFIG_MAIN
#include "catch.hpp"
#include "factorial.h"
TEST_CASE( "factorial on valid numbers", "[factorial]" ) {
REQUIRE( factorial(1) == 1 );
REQUIRE( factorial(5) == 120 );
REQUIRE( factorial(10) == 3628800 );
}
阶乘.cpp:
#include "factorial.h"
int factorial(int number)
{
if(number < 0)
return -1;
int result = 1;
for(int i = number; i > 0; i--)
result *= i;
return result;
}
阶乘.h:
#ifndef FACTORIAL
#define FACTORIAL
int factorial(int number);
#endif // FACTORIAL
catch.hpp 是单元测试的 catch 框架
我用 C 而不是 C++ 编码,扩展名“.cpp”只是因为 catch,它不适用于扩展名为“.c”的文件
还有一个文件:testing.pro,其中包含
问
MAKE_CFLAGS += -std=c99 -pedantic -Wall -Wextra
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += \
main.cpp \
factorial.cpp \
tests.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
catch.hpp \
factorial.h
该文件由 QT 创建者生成。
好的,我的问题是,当我尝试构建这个项目时,我收到错误:“main 的多个定义”。
我得到它。我在main.cpp 文件和tests.cpp 中有main。但我不知道,我应该怎么做才能让它工作。我想要一个项目,它具有完全工作的 main 和带有测试的文件,我可以在其中测试我的功能。我几乎到处搜索。我想我必须以某种方式在 QT creator 中组织我的项目,但我不知道如何。我不知道它应该如何工作。
感谢您的建议