2014-04-02 3 views
0

나는 클라이언트 - 서버 시스템을 쓰고있다. 두 가지가 올바르게 상호 작용하는지 테스트하기 위해 오이 테스트를 작성하고 싶습니다.일단 서버가 연결을 수락하면 서버가 차단되므로 클라이언트와 서버를 함께 테스트해야합니까?

하지만 내 서버와 클라이언트를 하나의 테스트에 넣으면 서버가 연결 수락을 시작할 때 서버가 차단되어 테스트가 진행되지 않습니다. 연결을 청취 할 때 서버가 차단되어야하므로 정상입니다.

그런 테스트에 어떻게 접근해야합니까?

내 오이 기능은 다음과 같이이다 : 이것에 대한

Feature: Client Can Connect. 

Scenario: Client can connect to server. 
Given Server is up and running. 
When Client is up and tries to connect to server. 
Then Server accepts connection. 

내 단계 정의는 다음과 같습니다

public class ClientConnectsServerStepDefinition { 

@Given("^server is up and running$") 
public void server_is_up_and_running() { 
    TheServer theServer = new TheServer("localhost", 5776); 
    theServer.start(); //The whole test would block at here and would not proceed 
} 

@When("^client is up and tries to connect to server$") 
public void client_is_up_and_tries_to_connect() { 
    TheClient theClient = new TheClient("localhost", 5776); 
    theClient.start(); 
} 

@Then("^server accepts connection.$") 
public void the_server_accepts_connection() { 
    Assert.assertTrue(theServer.isConnected); 
} 
} 

내가 한 번 별도의 스레드에서 서버와 클라이언트 퍼팅 시도했다. 하지만 두 개의 스레드로 분리되어 있기 때문에 서버 나 클라이언트로부터 어떤 피드백도 얻을 수 없기 때문에이 방법은 도움이되지 않습니다.

테스트를 올바르게 작성합니까? 내 코드를 비평 해주세요. 강한 손을 가져 주셔서 감사합니다.

답변

1

별도의 스레드에서 서버를 시작하십시오. 클라이언트가 모든 것을 멈추게 할 때 데몬 쓰레드로 만들거나 (마지막) 클라이언트가 연결을 끊을 때 끝내도록한다.

+0

저에게 데몬이라고하는 것을 상기시켜 주셔서 감사합니다. 나는 그 사실을 거의 잊어 버렸다. 고맙습니다! –

+0

스텝 데프를 쓰는 데 아이디어를 줄 수 있습니까? –

관련 문제