2010-11-22 4 views
4

주 메소드에서 main 메소드가 명령 행 인수를 기대하는 Java 프로그램이 있습니다. 이 프로그램은 또한 동시 처리 (쓰레드와 물건 사용)입니다.cmd 행 인수가 필요한 동시 Java 프로그램을 테스트하려면 어떻게합니까?

대규모 리팩터링을 프로그램에 적용하려고합니다. 리팩토링을 시작하기 전에 main 메소드에 대한 테스트 슈트를 만들고 싶습니다. 서로 다른 cmd 행 인수를 사용하여 main 메소드를 테스트하고 싶습니다. 필자는 각 리팩토링 단계가 끝나면 자동으로이 테스트를 실행하려고합니다. cmd 라인 인수를 전달하는 테스트는 어떻게 만들 수 있습니까?

JUnit은 동시 프로그램에서 잘 작동하지 않기 때문에 사용할 수 없습니다. 또한 JUnit으로 cmd 행 인수를 전달할 수 있는지 확실하지 않습니다.

저는 이클립스를 사용하고 있습니다.

답변

0

JMeter 사용을 고려하십시오. JUnit sampler을 사용하면 동시 JUnit 테스트를 쉽게 수행하고 결과를 확인할 수 있습니다. 자세한 내용은 this question을 참조하십시오.

0

저는 멀티 스레딩에 사용할 수있는 다양한 자동화 도구에 익숙하지 않으므로 이에 대해서는 언급하지 않겠습니다. 그러나 간단하면서도 효과적인 옵션은 실행중인 프로그램의 키 이벤트를 CSV 파일에 기록하는 것입니다. 최종 결과 (계산 유형 프로그램 인 경우)를 로그하거나 일부 키 상태가 변경되거나 이벤트가 발생하는 프로그램의 모든 인스턴스에서 로그 아웃 할 수 있습니다. 다중 스레드 응용 프로그램이기 때문에 기록 된 데이터의 순서를 비교하는 데주의를 기울여야합니다. 예상되는 키 이벤트의 상대적인 순서를 보장 할 수 없다면 키 - 값 유형 결과를 사용하여 출력을 비교하십시오. 어느 쪽이든, 아이디어는 다시 테스트 할 때 자동 비교에 사용할 수있는 테스트 데이터 파일을 만드는 것입니다.

0

Awaitility 또한 결정 론적 단위 테스트를 작성하는 데 유용 할 수 있습니다. 시스템의 어딘가에서 상태가 업데이트 될 때까지 기다릴 수 있습니다. 예를 들어 :

await().untilCall(to(myService).myMethod(), greaterThan(3)); 

또는

await().atMost(5,SECONDS).until(fieldIn(myObject).ofType(int.class), equalTo(1)); 

또한 스칼라와 그루비 지원합니다.

await until { something() > 4 } // Scala example 
관련 문제