문제

Corba를 사용하여 서버와 통신하는 Unittesting Code에 대한 귀하의 의견에 관심이 있습니다.

Corba 물건을 조롱 하시겠습니까? Python에서는 Corba 물체의 모든 방법이 동적으로로드되기 때문에 엉덩이의 통증입니다. 그래서 당신은 기본적으로 "mock ally"에 붙어 있습니다.

감사!

참고 : 나는 나 자신을 충분히 명확하게 만들지 않았다고 생각하므로 다소 구체적인 예를 들려 줄 것이다.

웹 애플리케이션은 서버에서받은 데이터가 포함 된 페이지를 표시해야합니다. server_pagetable.getData ()를 호출하여 데이터를 얻은 다음 데이터를 형식화하고 데이터를 올바른 파이썬 유형으로 변환합니다 (CORBA에는 날짜 유형이 없기 때문에)가 표시 될 HTML 코드를 생성합니다.

그리고 이것이 테스트하고 싶은 것입니다. 데이터를 수신하고 모든 변환을 수행하고 마지막으로 HTML 코드를 작성하는 방법입니다.

가장 간단한 결정은 CORBA 객체를 본질적으로 네트워킹과 DB 기능 (단위 테스트에서 테스트해서는 안된)을 모두 구성하기 때문에 조롱하는 것입니다.

이것은 모든 CORBA 객체 (사용자 개체, 서버 세션 객체, pagetable 객체, 관리자 객체 등이 있습니다)를 조롱합니다. 어쩌면 그것은 내가 Corba에 갇혀 있기 때문에 서버에서 지시 한 객체 계층을 모의로 반영해야 할 수도 있습니다. 반면에, Corba를 사용하여 내 마음을 넘지 않는 코드 테스트 코드에 대한 시원한 우아한 솔루션이있을 수 있습니다.

도움이 되었습니까?

해결책

Corba를 유닛 테스트하려고하지 마십시오. Corba가 작동한다고 가정합니다. 유닛 테스트 너 스스로 암호. 이것은 다음을 의미합니다.

  1. CORBA를 올바르게 설정하고 단일 방법을 호출하고 속성을 읽을 수 있는지 확인하는 단위 테스트를 만듭니다. 그것이 작동하면 다른 모든 방법과 속성도 작동합니다.

  2. 그 후, 모든 노출 된 물체가 올바르게 작동하는지 테스트하십시오. 당신은 이것을 위해 Corba가 필요하지 않습니다.

다른 팁

테스트 서버를 설정하고 실시간 테스트를 수행합니다. UnitTesting은 네트워크 제품에서 까다로울 수 있으므로 가능한 한 현실적으로 유지하는 것이 가장 좋습니다. 예를 들어 세 개의 다른 서버에 통신 해야하는 경우 테스트 서버에서 조롱이 수행됩니다. 세 가지 서버의 역할을 수행하기 위해 세 가지 다른 IP 주소로 설정할 수 있습니다.

나는 태클과 비슷한 작업을했지만 아마도 Corba 객체 또는 더 구체적으로 COM 객체 (CORBA 구현)의 구현 테스트를 작성하지 않을 것입니다. 나는 구조 자체와 달리 이러한 구조를 사용하는 작업에 대한 테스트를 작성해야합니다 (너무 많은 질문을하면 그 역할에도 착륙 할 수는 있지만). 하루가 끝날 무렵, UnitTest는 더 작은 규모로 통합되므로 테스트를 작성할 때마다 항상 실제 구조가 아닌 입력 및 출력을 생각하고 있습니다. 문제를 쓴 방식에서 내 집중력은 Server_pagetable.getData ()의 데이터와 그 사이에 발생하는 일에 대해 너무 많이 돌보지 않고 출력 HTML의 데이터에 있습니다 (테스트중인 코드이기 때문에 정의하고 싶지 않습니다. 테스트의 코드이지만 출력이 정확한지 확인). 사이에서 개별 기능을 테스트하려면 모의 데이터를 얻을 수 있습니다 (본질적으로 스틸 데이터가 있으므로 가능한 경우 모의 클래스 대신 모의 데이터를 생성 할 수 있습니다). 모의는 전체 코드의 일부가 없을 때만 사용되며 해당 함수는 코드의 해당 부분에서 약간의 입력이 필요하지만 관심이 없거나 그들과의 상호 작용을 단순화 할 수 있습니다. 이것은 단지 내 의견입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top