G ++项目编译与升压单元测试(g++ project compilation with boost

2019-08-03 04:46发布

我试图在Linux上编译单元测试(升压),但是编译器thows错误。 可能有人检查我的命令?

g++ -o UTest ../UTest/UT1.cpp ../UTest/UT2.cpp -lboost_system -lboost_thread -lboost_unit_test_framework 

错误

/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'

我删除main()从克++ COMAND因为当它不应该被用来boost unit test时使用。

怎么了?

PS没有单元测试项目(含main()编译的罚款。 在Windows单元测试工作的罚款也。

更新

这个问题main()得到解决。 但是,一个新的先后诞生。

无论UT1.cppUT2.cpp已列入UTCommon.h ,现在我有很多错误,如以下

错误

tmp2.cpp:(.text+0xd44a): multiple definition of `boost::unit_test::unit_test_log_t::operator<<(boost::unit_test::lazy_ostream const&)'
/tmp/cc0jw8uR.o:tmp.cpp:(.text+0xd44a): first defined here
/tmp/cctLn9QJ.o: In function `boost::test_tools::tt_detail::equal_impl(char const*, char const*)'

UTCommon.h

#ifndef UT_COMMON_H
#define UT_COMMON_H

#ifndef BOOST_TEST_MODULE
#define BOOST_TEST_MODULE UnitTest
#endif

#if defined (__GNUC__) && defined(__unix__)
    #include <boost/test/included/unit_test.hpp>
#elif defined (WIN32)
    #include <boost/test/unit_test.hpp>
#endif

#endif

Answer 1:

最好创建包括该文件的单独cpp文件boost/test/included/unit_test.hpp 。 这将包括一个预生成main()在你的代码的功能。 然后,您可以使用BOOST_AUTO_TEST_CASE的实际测试宏(多次,只要你喜欢):

#define BOOST_TEST_DYN_LINK        // this is optional
#define BOOST_TEST_MODULE MyTest   // specify the name of your test module
#include <boost/test/included/unit_test.hpp>  // include this to get main()


BOOST_AUTO_TEST_CASE(my_test_1)    // specify a test case
{
  /* Test something... */
  const static auto expected = 12;
  auto actual = my_func();

  BOOST_CHECK(actual == expected);
}

编译这个.cpp文件(根据需要添加在自己的代码中定义的所有功能连接选项),这将成为执行所有测试并生成报告的可执行文件。



文章来源: g++ project compilation with boost unit test
标签: c++ boost g++