2011-03-28 2 views
3

나는 지금은 개체 A는 항상 최종 보장하는 테스트를 작성하려면이JUnit에서 객체를 테스트하는 방법은?

public void method(final Object A){ .... } 

과 같은 방법이있다. 그러한 시험을 어떻게 작성합니까?

+1

당신이 묻고있는 것이 확실하지 않습니다 ... 최종적인 내용입니다. 그것으로 표시됩니다. 'method'의 실행 중에 값이 변하지 않는다는 것을 테스트하고 싶습니까? – andersoj

+0

기본적으로이 메서드 내에서 Object A가 변경되는 것을 원하지 않습니다. 그래서 나는 다른 개발자가 오지 않고 객체의 '최종'유형을 변경하지 못하게하려고한다. 나는 그런 헛소리들로부터 보호 할 단위 테스트를 원한다. – arpanoid

답변

9

귀하의 방법이 무엇인지 이해하지 못할지 모르겠습니다. 메서드의 마지막 매개 변수는 메서드에서 매개 변수를 다시 할당 할 수 없다는 것을 의미합니다.

public void doStuff(String s){ 
    s = "OK"; 
} 

하지만

등으로
public void doStuff(final String s){ 
    s = "ERROR s cannot be assigned because it is final!";//causes error 
} 

는 테스트 할 수없는 행동이 없다. 유효하지 않으면 컴파일되지 않습니다.


편집 : 당신이 마지막 당신에게 단위 테스트를 원하는 경우에 I가 가능하지 않습니다 중 하나 나는 그것이 내부적으로 확인되면 정보가 컴파일시에 손실 있다고 생각하기 때문이다.

+0

완벽하게 좋은 질문이라고 생각합니다. 'final' 메서드 매개 변수의 존재를 단위 테스트 할 수 있습니까? – skaffman

+0

@skaffman 필자는 "final"은 본질적으로 컴파일 타임 주석이라고 생각하기 때문에 생각하지 않습니다. – ArtB

+0

글쎄, 이제는 이것에 쓸 시간이 없으므로 이것은 포인터가 아닙니다. 당신이하고 싶은 것은 리플렉션 (reflection)을 사용하여 메소드의 매개 변수를 얻는 것입니다 (이를 수행하는 방법을 알지 못했을 때). 최종적인 것인지 확인하기 위해 수식어를 검사합니다. http://download.oracle.com/javase/1.4.2/docs/api/java/lang/reflect/Modifier.html#FINAL – Speck

관련 문제