2013-03-29 8 views
0

저는 우리 모듈 중 하나에 대한 CppUnit 테스트 케이스가있는 Visual Studio 프로젝트를 보유하고 있습니다. 이 프로젝트를 빌드하면 dll (ModuleUnitTest.dll과 같은 것)이 생성됩니다. 이 테스트를 어떻게 실행합니까? CppUnit에서이 dll을 읽고 테스트를 실행할 수있는 readymade 스텁이 있습니까? 아니면 나 자신을 써야 하나? 이 단위 테스트 케이스는 오랜 시간부터 사용할 수 있었고 스텁 코드가 없기 때문에 필자는 이것을 쓸 필요가 없다고 생각한다. 누군가가 dll에서 테스트를 어떻게 수행 할 수 있는지 말해 줄 수 있습니까?dll에서 CppUnit으로 유닛 테스트 실행

+0

해당 DLL에 rundll32-complaint 진입 점이 있다고 가정하지 않습니까? – WhozCraig

+0

@WhozCraig :'main' 또는'_tmain'을 의미합니까? – Asha

+0

해당 dll을 cppunit 프로젝트 빌드에 연결하고 테스트 케이스에 액세스해야합니다. – TravellingGeek

답변

0

테스트 코드에서 테스트 러너가 필요합니다. 나는

#include <cppunit/extensions/TestFactoryRegistry.h> 
#include <cppunit/ui/text/TestRunner.h> 

int main(int argc, char **argv) 
{ 
    CppUnit::TextUi::TestRunner runner; 
    CppUnit::TestFactoryRegistry &registry = CppUnit::TestFactoryRegistry::getRegistry(); 
    runner.addTest(registry.makeTest()); 
    bool wasSuccessful = runner.run("", false); 
    return wasSuccessful; 
} 

TestRegistry 정보를 사용할 수 없기 때문에이 별도로 컴파일 된 프로젝트 인 경우 표준 대답은 CppUnitTestMain.cpp 같은 파일을 생성하고 (바로 CppUnit을 워드 프로세서에서)이 같은 코드 뭔가를 추가하는 것입니다 LoadLibrary를 사용하여 DLL을 가져온 다음 DLL에서 정보를 가져 와서 테스트 러너에 추가하는 코딩을 수행하게 될 것이라고 생각합니다. 불가능하지는 않지만, 스스로 알아야 할 일입니다.

그러나 수동으로 테스트 레지스트리를 처리하면 매크로가 처리하기 쉬운 추가 작업입니다. 그게 제가 묻는 더 큰 질문으로 이어집니다. 당신의 테스트가 현재 DLL 프로젝트에 들어있는 이유는 무엇입니까? 그들이 처형되지 않았다면 그들과 함께 무엇을하고 있습니까? 당신이 활용할 수있는 다른 실행 가능한 로딩과 실행이 있습니까?

우리가 일반적으로 사용하는 대답은 테스트 프로젝트 자체를 DLL이 아닌 실행 파일로 만들고 모든 테스트 코드를 포함하는 것입니다. 추가 종속성 설정 : $ (SolutionDir) businessProject \ debug \ obj * .OBJ 파일을 통해 비즈니스 로직을 정적으로 링크하고 솔루션에서 빌드되는 기본 businessProject 코드에 대한 프로젝트 종속성을 추가합니다.

0

Youse Visual Explorer의 테스트 탐색기 플로팅 패널.