문제

그래서 나는 다음과 같은 것처럼 보이는 수업이 있습니다.

public class MyClass
{

    DatabaseDependency _depend;

    public MyClass(DatabaseDependency depend)
    {
        _depend = depend;
    }

    public string DoSomething(DBParameter database)
    {
        var result = _depend.GetResults(database, ...);
        string response = String.Empty;        

        // some logic to process the result 

        return response;
    }

}

DBPARAMETER가 서버, DBNAME, DBTYPE 등과 같은 속성을 포함하는 간단한 값 클래스 인 경우

이제 DBPARAMETER 매개 변수 대신 연결 문자열을 수락하도록 DOSOMETHE에 오버로드를 추가하려고합니다 (데이터베이스 의존성에 이미 연결 문자열을 허용하는 getResults Overload가 있다고 가정합니다).

내 질문 : 데이터베이스 의존성에서 결과를 처리하는 데 사용되는 다양한 논리 경로를 설명하는 몇 가지 단위 테스트가 있습니다. 오버로드를 복용량에 추가하면 본질적으로 코드를 리팩게링 하여이 논리가 두 과부하로 재사용되도록합니다 (즉, 아마도 개인 메소드로 이동). 이것을 테스트하는 단위 테스트에 대한 올바른 방법은 무엇입니까? 추가하는 새 오버로드에 대한 모든 논리적 경로를 확인하기 위해 많은 단위 테스트가 필요합니까?

도움이 되었습니까?

해결책

문자열을 취하는 오버로드 메소드가 연결 객체로 변환 한 다음 원본으로 위임된다고 확신하는 경우 테스트 방법이 하나 더 추가되어야합니다.

그러나 이는 대표단이 발생하지 않도록 기본 과부하 된 방법을 리팩터링하면 분류됩니다. 이 시나리오에서는 두 방법 모두에 대한 모든 테스트를 복제하는 것이 더 자신감을 느낍니다.

첫 번째 경로가 가장 실용적이라고 생각합니다. 그러나 가끔 코드 커버리지 분석을 실행하는 것이 좋습니다. 이는 더 많은 테스트가 필요한 경우 나중에 나타납니다.

다른 팁

코드가 현재 보이는 방식을 유지하는 경우 예 : 해당 방법도 단위 테스트를해야하며 본질적으로 테스트 노력을 복제해야합니다.

그러나 한 메소드가 단순히 다른 방법을 호출하도록 기능을 구현하는 것이 합리적이라면 다른 메소드를 가상으로 만들 수 있습니다. 그러면 올바른 값으로 다른 메소드에 의해 가상 메소드가 호출되고 있는지 확인하는 테스트 별 서브 클래스를 만들 수 있습니다.

하나 이상의 단위 테스트로 확인되면 지금은 그 방법을 테스트 할 필요가 없습니다. 입증되었습니다 이 방법은 다른 방법을 올바르게 호출하고 해당 방법에 대한 테스트 노력을 집중할 수 있습니다.

예, 개인 방법에 대한 공통 처리를 리팩토링합니다. 테스트 고려 사항에 관계없이 어쨌든이 작업을 수행한다고 가정하면 중복 코드가 나쁩니다. 테스트에 대한 생각이 우리가 올바른 일을하게하는 방법은 흥미 롭습니다.

그런 다음 각 오버라 노드 시작 경로에 대해 몇 가지 간단한 테스트가 있습니다.

블랙 박스 또는 화이트 박스 테스트를 수행하는지 여부와 응용 프로그램이 두 버전의 메소드를 사용하는 경우에 따라 다릅니다.

구현을 테스트한다고 가정하면 단순히 '기본'버전을 테스트하는 것이 좋습니다. 제시된 API (Javadocs 또는 이와 유사한)에 대해서만 알고있는 테스트 작가의 라인을 따라 생각하고 있다면 API 만 기반으로 테스트해야합니다. 이는 두 방법을 완전히 테스트하는 것을 의미합니다.

애플리케이션이 하나의 방법 만 사용하는 경우 다른 방법을 사용하지 말고 미리 결정된 버전에서 여전히 더 이상 사용되지 않은 메소드가 존재할 때 실패하는 버전 조건 테스트를 만듭니다. IE : 감가 상각 된 방법이 어느 시점에서 제거되었음을 시행하십시오.

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