2010-07-08 8 views
2

개체 변수를 선언하는 대신 setUp() 안에 개체를 만들 이유가 있습니까?선언문에 객체를 생성하지 않는 이유가 있습니까?

나는이 방법을 책에서 보았지만 그 효과는 동일하며 이전 연습 버전의 Junit이 각각의 개체를 인스턴스화하지 않았기 때문에 효과가 가장 좋은 이유로 완료되었는지 확신 할 수 없습니다. 테스트 (see here) 또는 스타일 일 경우.

+0

내 게시물을 어떻게 편집 할 수 있었습니까? – orbfish

+0

http://stackoverflow.com/faq - 평판이란 무엇입니까? –

+0

나는 그것을 읽었지 만 충분히 추측하지 못했습니다. 그것은 "코를 가볍게 치다"및 "잃어버린 것을 느슨하게 사용"과 함께 그 아래에 있습니다. – orbfish

답변

3

해당 개체의 인스턴스화가 외부 요소에 종속되지 않는 경우이를 즉시 선언하고 정의하는 것이 좋습니다. 그러나 종종 다른 요소 (예 : 싱글 톤 * 초기화)에 의존하거나 생성자 매개 변수 (일부는 테스트 종속적 일 수도 있음)를 필요로하거나 초기화에 여러 단계가 필요합니다. 그런 다음 인스턴스화를 설정 메소드 또는 심지어 테스트 메소드 자체로 연기해야합니다.

JUnit은 테스트 클래스의 새 인스턴스를 작성하므로 각 테스트 메소드 실행에 대한 데이터 멤버의 새 인스턴스가 작성된다는 점에 유의하십시오. 따라서 위에서 언급 한 의존성이 없으면 선언적 시점이나 설정 메서드에서 멤버를 인스턴스화하는 것과 의미 적으로 차이가 없습니다.

* 이것은 싱글 톤을 좋아하지 않는 이유 중 하나입니다. 그러나 종종 레거시 코드를 사용하는 경우가 있습니다.

+0

감사합니다. – orbfish

관련 문제