유닛 테스트를 위해 Boost.Test를 사용하고 있습니다. 테스트 코드가 배송되지 않고 프로덕션 코드가 부 풀리지 않도록 별도의 dll에 모든 테스트 코드를 갖고 싶습니다. 이를 위해BOOST.TEST dll과 exe에서 주자에서 BOOST 테스트 케이스가 발생하는 문제
은 내가
bool init_unit_test_suite()
{
test_suite * ts = GetTestSuite();
framework::master_test_suite().add(ts);
return true;
}
나의 init_unit_test_suite 내에서이 메소드를 호출 할 수 있어요, dll을에서 수동 테스트 케이스를 가진 것으로 간주하고 내 테스트 러너에서 DLL 수출을하는 방법
// Test cases DLL code
// exported method
__declspec(dllexport) test_suite *GetTestSuite()
{
test_suite* ts1 = BOOST_TEST_SUITE("manual_test_suite1");
ts1->add(BOOST_TEST_CASE(&manual_test_case1));
ts1->add(BOOST_TEST_CASE(&manual_test_case2));
return ts1;
}
이
그러나 테스트 사례가 선택되지 않았습니다. 그러나 테스트 주자 내부에있는 테스트 사례가 로컬에 집어 들고 있습니다.
나는 BOOST 정적 lib 디렉토리로 연결하고 내 테스트 러너에
// Test runner app code
#define BOOST_TEST_NO_LIB
#define BOOST_TEST_NO_MAIN
을 정의하여 내 자신의 주를있다.
이 조합에 어떤 문제가 있습니까? 개별 dll에서 테스트 케이스를 분리하고 외부 테스트 러너를 확보하려면 어떻게해야합니까?
편집 : 제가 테스트 케이스를 호출하는 데 사용하는 명령 줄은 다음과 같습니다
는char *myargv[] = {"", "--log_level=test_suite", "report_level=detailed", "output_format=xml", "--run_test=manual_test_suite1"};
argc = _countof(myargv);
unit_test_main((init_unit_test_func) &init_unit_test_suite, argc, myargv);
내가 위의 명령 줄 점점 오전 오류 :
Test setup error: no test cases matching filter
문제점을 발견했습니다. 내 테스트 러너는 Boost.Test에 동적으로 연결되었습니다. 하지만 내 테스트 DLL은 부스트에 정적으로 연결되었습니다. 동적 링크로 변경했는데 이제는 모든 것이 잘 작동합니다. –