현재 내가 (의사) 이런 식으로 수행부스트와 흐름 :: 시험
#include <boost/test/unit_test.hpp>
#include <string>
bool testingClient = true;
BOOST_AUTO_TEST_SUITE(ProtocolSchema)
BOOST_AUTO_TEST_CASE(server)
{
testingClient = false;
// start server listener
FILE *client_stdout = popen((argv[0] + std::string(" --run_test=ProtocolSchema/client 2>&1")).c_str(), "r");
for (1000ms)
{
// listen for ping, reply with a pong
}
pclose(fl);
}
BOOST_AUTO_TEST_CASE(client)
{
if (!testingClient)
return;
// send ping to the server
// check that it replies with a pong
}
}
아이디어는 분명하다 : 그것은 서버를 실행하려고하면, 순차적으로 boost::test
실행 테스트는 서버 단위 테스트 플립 testingClient
이 방법은 다음 테스트는 단순히 아무것도하지 않고 종료합니다. 서버 테스트는 클라이언트 테스트 만 실행하도록 설정된 run_test
arg와 동일한 테스트 실행 파일을 시작합니다. 두 번째 프로세스에서 testingClient
플래그가 반전되지 않으면 실제로 클라이언트 테스트가 실행됩니다.
boost :: test로 이런 종류의 클라이언트 - 서버 유닛 테스트를 수행하는 적절한 방법이 있습니까? 내 경우에는 클라이언트 프로세스에서 로깅 테스트 모든 종류의 잃어버린 있습니다 : 나는 client_stdout에서 그들을 fread 필요하고 다음 BOOST_MESSAGE에 모두 쓸 수 있을까요?
- 서버를 설정 테스트
후이 서버를 죽이는 테스트
이 보이는 데 도움이 boost_test/tests_organization/fixtures.html). –
우리는 그것들을 사용하지만 그것은 나의 경우에는 도움이되지 않습니다. 별도의 프로세스 시작과 관계가 없습니다 (동일한 프로세스에서 실행할 수 없음). – Pavel