BOOST.Test 프레임 워크와 관련된 질문이 있고 내 문제를 설명하기 위해 다음 예제를 사용하십시오. 모든 테스트 클래스를 통합하는 TestClass 라이브러리를 빌드하고 라이브러리는 정적이거나 동적 일 수 있습니다. 다음과 같이 라이브러리에 하나 개의 일반적인 기능은 다음의 TestClass 라이브러리 모두 들어정적 boost.test 라이브러리 및 동적 boost.test 라이브러리
test_suite* init_unit_test_suite(int argc, char* argv[])
{
framework::master_test_suite().add(BOOST_TEST_CASE(&HelloWorld));
return 0;
}
:
__declspec(dllexport) HelloWorld()
{
int i= 2;
int j= 1;
BOOST_CHECK(i == j);
BOOST_CHECK_EQUAL(i,j);
}
을 그리고,이 라이브러리를 호출하는 실행 프로그램 (예를 들어 MAIN.CPP)을 설정 그리고 실행 프로그램은 BOOST.Test 라이브러리가 필요합니다. 내가 만든이 BOOST.Test 라이브러리는 정적이다. 그런 다음 찾았습니다 :
TestClass 라이브러리가 정적이면 모든 것이 잘 진행됩니다.
알 수없는 위치 (0) : 표준 : : runtime_error : "하여 HelloWorld"에서 치명적인 오류 수 없습니다 우리 전자 테스트하기의 TestClass 라이브러리는 동적 인 경우
그러나, 나는 다음과 같은 오류가받은 프레임 워크가 초기화되기 전에 도구 아이디어가 있습니까? 감사합니다
* 당신은 모두 별도의 DLL에있는 당신을 testcases를두고 왜 *을? 이 목적은 어떤 목적을합니까? –
@MartinBa 의견 주셔서 감사합니다. 테스트 케이스가 분리 된 DLL에 들어있는 이유는 분리 된 DLL이 비 테스트 목적으로 사용될 수있는 일부 기능을 포함 할 수 있기 때문입니다. – feelfree
테스트 코드가 아닌 테스트 (즉, 유틸리티 또는 "프로덕션"코드)를 혼합하는 것은 일반적으로 좋지 않습니다. 두 사람을 분리 시키면 인생이 훨씬 쉬워집니다. 이것은 단순히 좋은 [패키지 디자인 원칙] (http://en.wikipedia.org/wiki/Package_Principles)을 따르는 것입니다. 여기서 C++로 라이브러리를 "패키지"라고 부릅니다. – legalize