4

Kotlin에서 단위 테스트 확장 기능을 어떻게 사용해야합니까? 정적 메서드 호출이나 정적이 아닌 다른 메서드로 테스트해야합니까? 또한 언어는 Java와 완벽하게 상호 운용되므로 Kotlin 확장 기능에 대한 Java 단위 테스트를 수행해야합니까?Kotlin 확장 기능은 어떻게 테스트해야합니까?

답변

9

정적이든 아니든간에 메서드를 테스트하기 위해서는 실제 코드처럼 호출하고 올바르게 수행되는지 확인합니다. 이 확장 방법을 가정

, 예를 들어, 파일 COM/foo는/Bar.kt에 정의되어

fun String.lengthPlus1(): Int { 
    return this.length + 1 
} 

당신이 (당신이 코 틀린 코드를 테스트 할 일반적 것) 코 틀린에 테스트를 작성하는 경우 , 당신은 당신이 자바를 작성하는 경우

assertThat("foo".lengthPlus1()).isEqualTo(4); 

를 작성합니다 (하지만 당신은 그렇게 할 이유?)

assertThat(BarKt.lengthPlus1("foo")).isEqualTo(4); 
+0

은 결코 응을 작성하도록 Kotlin에 대한 테스트는 정말 나쁜 생각 일 것입니다 :) 그것이 어떻게 그렇게 행동하는지 확인하는 것이 더 많았습니다. 하지만 그 메소드가 호출되는지 (예를 들어 Mockito를 사용하여) 리턴 값을 체크하지 않는지 확인하고자한다면 어떨까요? – TheTechWolf

+0

Java 코드에서 보듯이 확장 메서드는 실제로 정적 메서드입니다. Mockito는 정적 메서드를 모방 할 수 없습니다. –

+1

@TheTechWolf 확장 메서드가 호출되었는지 여부를 확인하는 것과 관련해서는 안됩니다. 예상되는 결과가 있는지 확인해야합니다. 확장 메소드가 지나치게 복잡하고 호출을 주장해야하는 경우, 아마도 더 많은 테스트 가능한 클래스로 리팩터링되어야 할 것입니다. 이 모든 것은 사용 사례와 확장 기능이 실제로하는 일에 달려 있지만 사용 사례는 무엇입니까? –