2016-08-25 4 views
1

조건부가 enum 메서드를 기반으로하는 경우 단위 테스트에서 모든 조건을 테스트해야합니까?조건부 테스트 Enum 기반

많은 값을 가진 열거 형을 사용하면 단위 테스트가 너무 커서 모든 가능한 조건에 도달 할 수 없습니다.

예 : 모든 열거하고 (어떻게 든) 청소기 방법으로 예상되는 결과를 기록 할 수 있습니다

@DataProvider 
public static Object[][] provideEnumasAndExpectedErrorResult() { 
    return new Object[][] { 
    { AnEnum.A, true }, 
    { AnEnum.B, false } 
    }; 
} 

@Test 
@UseDataProvider("provideEnumasAndExpectedErrorResult") 
public void testEnumErrors(AnEnum enumConstant, boolean expectedResult expectedResult) { 
    assertThat(enumConstant.isError(), is(expectedResult)); 

: 당신은 같은 ParametrizedTests를 사용 할 수

public enum AnEnum { 
    A(true), B(false), C(false), D(true); 

    AnEnum(boolean isError) { 
     this.isError = isError 
    } 
} 

public class TestEnum { 
    public String method(AnEnum anEnum) { 
     if(anEnum.isError()) { 
       return "An Error"; 
     } 
     return "Not An Error"; 
    } 
} 
+0

[열거 유형을 테스트하는 방법 (http://stackoverflow.com/questions/1079700/how-to-test-enum- 유형). 또한 [데이터 기반 테스트] (https://spockframework.github.io/spock/docs/1.0/data_driven_testing.html)가 도움이 될 수 있으며 열거 형뿐만 아니라 필요한 경우도 있습니다. – Morfic

+1

게터와 세터 테스트의 요점은 무엇입니까? Java 테스트 중입니까? 테스트를 실제 로직이있는 것으로 제한하십시오. See [Getter 및 Setter에 대한 단위 테스트를 작성해야합니까?] (0120-13997/5221149) – Andreas

+0

이것은 setter 및 getter를 테스트하지 않습니다. 코드에서 가능한 모든 조합을 테스트하려고합니다. 우리는 모든 조합을 테스트해야합니까 아니면 두 가지 조합 만 테스트해야합니까? (이 예에서는 코드가 더 많은 조합을 가질 수있는 반면 코드 조합은 두 가지 조합으로 100 % 코드 적용 범위를 가질 수 있습니다) –

답변

1

.

+0

사과드립니다. 이미 알고 있다면 라이선스 제한에 따라 다음 두 가지 확장 기능을 사용할 수 있습니다. [zohhak] (https://github.com/piotrturski/zohhak) (LGPL 3.0) 및 [JUnitParams ] (Apache 2.0) – Morfic

+0

물론 좋은 해결책이 있습니다. – GhostCat

0

데이터 기반 테스트는 스팍으로 중대하다 :

아마 관심의
class AnEnumSpec extends Specification { 

    def "has correct error status"() { 
     expect: 
     result == anEnum.isError 

     where: 
     anEnum | result 
     AnEnum.A | true 
     AnEnum.B | false 
     AnEnum.C | false 
     AnEnum.D | true 
    } 
}