문제

나는 내 코드의 단위 테스트를 더 잘하려고 노력하고 있지만 지금은 원격 시스템을 다루는 많은 코드를 작성하고 있습니다.SNMP, WMI, 그런 종류의 것입니다.대부분의 클래스에서 객체를 테스트하기 위해 모형을 만들 수 있지만 실제 시스템의 단위 테스트는 어떻게 처리합니까?예를 들어, 내 수업이 나가서 서버에 대한 Win32_LogicalDisk 개체를 가져오는 경우 어떻게 단위 테스트를 할 수 있습니까?

도움이 되었습니까?

해결책

"모의하기 어렵거나 불가능한 것에 대해 어떻게 테스트합니까?"를 의미한다고 가정합니다.

"서버에 대한 Win32_LogicalDisk 개체를 가져오고" 다른 작업을 수행하는 클래스가 있는 경우(어떤 방식으로든 'Win32_LogicalDisk' 개체를 소비함) 이 개체를 사용하는 클래스 조각을 테스트하려는 경우 사용할 수 있다 의존성 주입 'Win32_LogicalDisk' 개체를 모의할 수 있습니다.예를 들어:

class LogicalDiskConsumer(object):

    def __init__(self, arg1, arg2, LogicalDiskFactory)
        self.arg1=arg1
        self.arg2=arg2
        self.LogicalDisk=LogicalDiskFactory()

    def consumedisk(self):
        self.LogicalDisk.someaction()

그런 다음 단위 테스트 코드에서 'Win32_LogicalDisk'에 대한 모의 개체를 반환하는 'LogicalDiskFactory'를 전달합니다.

다른 팁

모의하기 어려운 항목을 테스트하는 가장 쉬운 방법은 코드(테스트할 가치가 있는 논리)가 한 곳에 있고 코드에서 사용하는 다른 항목이 별도의 모듈에 있는 방식으로 코드를 리팩터링하는 것입니다.모듈은 모의하기 쉬우므로 비즈니스 로직에 집중할 수 있습니다.

핵심 라이브러리 루틴을 대체하고 아마도 적절한 지연 후에 알려진 값을 반환하는 "테스트 스텁" 세트를 생성할 수 있습니다.

예를 들어, 저는 최근에 타사 제품 내에서 실행되는 코드를 개발해야 했습니다.문제는 우리의 "파트너"가 기본 코드를 컴파일하고 통합하는 작업을 수행한다는 것입니다.나는 허락되지 않았다 보다 어떤 형태로든 코드를!내 전략은 내가 하는 일을 수행하는 매우 간단한 에뮬레이터를 구축하는 것이었습니다. 생각 그들의 코드는 엔지니어의 정보를 기반으로 했습니다.우리는 각 빌드에서 에뮬레이터의 다양한 부분을 쉽게 전환할 수 있는 언어를 사용했기 때문에 파트너가 각각의 새로운 반복을 빌드하기 전에 엄청난 양의 테스트를 수행할 수 있었습니다.

나는 같은 방법을 다시 사용할 것입니다. 특정 제품의 소프트웨어 문제는 다음으로 가장 신뢰할 수 있는 제품보다 훨씬 적기 때문입니다!

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