2012-03-09 3 views
2

C# .Net 프로젝트를 시작하고 있는데 Windows 서비스를 만들었습니까? 이 서비스는 여러 직렬 포트를 수신하고 일부 데이터를 다른 직렬 포트로 전달합니다. 내가 엔드 투 엔드 테스트를 제공 할 CI 솔루션을 찾으려고합니다. 기본적으로 가상 직렬 포트에 데이터 inn을 내 서비스로 보낸 다음 출력에서 ​​올바른 데이터가 전달되는지 확인합니다.직렬 포트와 인터페이스하는 소프트웨어에서 통합 테스트를 실행하는 방법은 무엇입니까?

입력에 대해서는 테스트중인 서비스에 보낼 수있는 로그 파일이 있으며 예상 결과가있는 파일을 생성합니다. com0com을 사용하여 가상 직렬 포트 쌍을 생성하면이 작업을 수행 할 수 있습니다.

나는이 테스트를 어떻게 구성해야하는지, 어떤 언어 나 프레임 워크를 사용 하는지를 실제로 파악하지 못했습니다. 필자는 이미 파이썬을 잘 알고 있으며, 시리얼 포트를 지원하기 때문에 테스트를 실행하는 데 사용할 수 있습니다. 필자가 필요로하는 것은 .Net Windows 서비스를 테스트하는 Python으로 작성된 일련의 테스트를 제어하는 ​​적절한 방법입니다.

허드슨이나 CruiseControl.Net에서 쉽게 할 수있는 것입니까? 소스 코드는 Mercurial (HG) 저장소에서 호스팅되며 이상적으로는 서버를 실행할 때마다 테스트를 실행하는 것이 좋습니다 (실행 시간이 허용되는 한).

좋은 계획 같습니까? 내가 할 수있는 다른 방법?

답변

1

솔직히 말해서 서비스가 수행중인 로직을 테스트하려면 C#에서 가상 포트를 조롱하고 입력 및 출력을 코드에서 확인하고 싶습니다. 특히 평가하려는 시나리오와 관련이 있습니다. 이 방법을 사용하면 NUnit, XUnit 등의 C# 단위 테스트 프레임 워크를 실행하는 데 간단하게 코드를 유지할 수 있습니다. 방정식에 다른 언어를 도입하거나 더 복잡하게 만들지는 않을 것입니다.

허드슨/젠킨스 (Hudson/Jenkins)와 같은 것이 귀하의 요구에 적합 할 것이며 CruiseControl.Net과 같이 추천 할 수 있습니다. 치아가 약간 길어서 같은 종류가 아닙니다. 주변 지역 사회의

다른 질문이 있으면 그냥 찍으십시오.

건배, 나단

+1

나는 또한 내 직렬 포트를 조롱을 포함하여, 다른 테스트를 실행하는 데 NUnit를 사용합니다. 그러나 복잡한 바이너리 데이터를 입력으로 사용하면 완전한 엔드 투 엔드 테스트를 실행하고 싶습니다. 미래의 유지 보수를 위해 이것을 다른 사람들에게 넘겨 줄 것이라는 사실은 우리가 갈 때 더 많은 테스트를 추가하는 "쉬운"방법을 원한다는 것을 의미합니다. –

+1

종단 간 테스트는 단위 테스트보다 훨씬 중요합니다. 포트 인터페이스를 조롱하는 것도 좋은 생각이지만 실제 데이터를 사용하여 엔드 투 엔드 테스트를하는 것은 아닙니다. – Johannes

관련 문제