2012-05-09 2 views
0

테스트 된 방법과 동일한 클래스에 단위 테스트를 작성하는 것과 다른 클래스 (동일한 패키지 또는 extern 패키지)에 쓰는 것의 차이점은 무엇입니까? 이러한 테스트 위치의 장점이나 단점은 무엇입니까?단위 테스트 (java)를 작성하는 가장 좋은 위치는 무엇입니까?

+1

한 단어 : 투명도 ... – creativeby

+0

비슷한 질문이 [가끔 있습니다] (http://stackoverflow.com/q/9022547/343266). –

답변

0

이 질문에 대한 "올바른 답변"이 없습니다.

동일한 클래스로 작성 : 개인적인 방법을 테스트 할 수 있지만 코드를 망칠 수 있습니다.

같은 프로젝트에서 쓰기 : 내부 방법/논리를 테스트 할 수 있지만 프로젝트를 엉망으로 만들고 컴파일 시간을 연장합니다.

외부 작성 : 프로젝트 내부 메서드/클래스를 테스트하지 못하도록하지만 테스트를 "프로덕션"코더 외부에서 깨끗하게 유지합니다.

+1

개인 메서드를 직접 테스트 할 필요는 거의 없습니다. 비공개 방식을 통해 개인 메소드의 일부 기능을 테스트 할 수없는 경우 기능이 중복되는 경우가 있습니다. 게다가, 정말로 이것을 할 필요가 있다면, 당신은 개인적 방법을 반사적으로 호출 할 수 있습니다. –

+0

나는 반성 할 수는 있지만 개인 API를 변경하면 어떤 테스트가 바뀌기 시작하는지 생각하기를 원치 않는다는 데 동의합니다. 또한 사적 방법을 테스트하는 것은 가시적 인 방법을 테스트하는 것보다 덜 일반적이지만 때로는 발생할 수도 있습니다. 어쨌든, 테스트 된 클래스 내에 테스트를 작성하는 것은 대부분의 사람들이 할 일이 아닙니다. –

+0

컴파일 시간이 중요하지 않습니다. 같은 양의 코드를 컴파일하는 것이 코드가 단일 클래스 또는 두 클래스에 관계없이 약 같은 시간이 걸릴 것으로 생각합니다. 또한 테스트 코드가 분리되어 있으면 실제로 시간을 절약하기 위해 컴파일하지 않을 수도 있습니다. –

0

분리 된 클래스로 작성하는 장점은 코드에서 테스트를 분리 할 수 ​​있다는 것입니다. 받는다는와 예를 들어 :
이 1. 빌드 모든
2. **/*Test*.java pattern

를 포함한 클래스를 실행 내가 알지도 못하는 어떻게 할 수있는 코드보다 같은 클래스의 단위 테스트 ...

4

나는 당신이 당신의 테스트가 분리 유지한다고 가정 아는 사람을 - 당신은 별도의 클래스 (들), 당신은

  • 당신의 인생이 방법 쉽게 잘 알려진 유닛 테스트 프레임 워크를 사용할 수있는 테스트를하는 경우 테스트 ed code
  • 당신이 원하는대로 많은 테스트 케이스를 가지고 있습니다. (프로덕션 클래스를 엄청나게 관리하지 않아도됩니다.) 잘 관리 된 프로젝트에서는 프로덕션 코드만큼 많은 단위 테스트 코드가 존재합니다. 결과적으로 귀하의 IDE의 API 인덱서를 구동시킬 수있는 프로덕션 API 방법보다 공개 테스트 방법이 더 중요합니다 ...)
  • 테스트없이 프로덕션 코드를 출하 - 테스트 종속성도 포함됩니다 (누구도 번들을 좋아하지 않습니다.
  • 프로덕션 코드 자체를 건드리지 않고 테스트를 변경합니다 (이렇게하면 SCM에서 감사 및 변경 제어가 훨씬 쉬워지고, 생산 코드/데이터의 변경 사항을 테스트 변경과 분리하는 것은 항상 쉬운 일이 아니므로)
0

테스트 방법은 코드를 테스트하는 것입니다. 테스트 된 클래스에 그것들을 넣으면 클래스의 API를 클러 터하고, 클래스의 바이트 코드와 의존성을 필요한 것보다 크게 만든다.

Calculator 클래스를 사용하려는 경우 testPlusWorks()testMinusWorks() 테스트 메소드가 필요하지 않습니다. 난 단지 plus()minus()이 필요합니다. testPlusWorks이 JUnit 또는 Mockito 라이브러리의 일부 클래스에 의존하는 경우 프로덕션 환경에서 이러한 종속성을 원하지 않습니다. 클래스를 테스트 할 때만 유용합니다.

1

유효성을 검사하는 코드와 별도의 테스트가 가장 좋습니다. 이유는 간단합니다. 응용 프로그램과 함께 테스트를 패키지하지 않으려는 것입니다. 신청서는 깨끗해야합니다. 테스트는 외부에서 기능을 검증해야합니다.

테스트에는 종종 추가 종속성 (예 : 테스트 프레임 워크, 모형 라이브러리 등)이 있습니다.

일반적으로 소스 코드를 src/main/java 아래에 넣고 src/tests/java에서 테스트합니다.

0

다른 소스 폴더에 단위 테스트를 작성하는 것이 가장 좋지만 패키지 된 (기본값) 범위 지정 메소드 및 가변 문자로 계속 액세스 할 수있는 동일한 패키지에 이들을 보관하십시오.

  1. 이 탐색 및 정신 및 용이성을 위해 함께 테스트를 유지
  2. 당신이 빌드를 수행 할 때, 당신은 병/전쟁/귀에서 테스트 클래스를 제외 할 수 있습니다.
관련 문제