문제

단위 테스트 구성에 관한 두 가지 질문이 있습니다.

  1. 테스트 클래스와 동일한 패키지에 테스트를해야합니까, 아니면 다른 패키지로 테스트를 구성 할 수 있습니까?

    예를 들어 내가 가지고 있다면 타당성 그리고 다른 테스트, 동일한 클래스에 있더라도 다른 패키지로 분할하는 것이 맞습니까?

  2. 모의 및 스텁 클래스는 어떻습니까? 테스트 만 포함 된 패키지와 분리하거나 합쳐야합니까?

도움이 되었습니까?

해결책

Junit 테스트 사례를 수행하는 방식은 동일한 패키지에 있지만 다른 루트 디렉토리에 넣는 것입니다. Maven을 사용하기 때문에 표준 위치를 사용하여 구조를 다음과 비슷합니다.

src/main/java/com/foo/Bar.java
src/test/java/com/foo/BarTest.java

분명히 구조에는 더 많은 것이 있지만, 이것은 메인 라인 코드와 별도로 테스트를 구축 할 수 있지만 여전히 보호 된 클래스 등에 액세스 할 수 있습니다. 다양한 유형의 테스트와 관련하여 이것은 매우 주관적입니다. 우리가 테스트 노력을 시작했을 때 (불행히도 개발 후 시작된), 나는 일을 꽤 고립 시키려고 노력했습니다. 불행히도, 우리가 500+ 테스트 케이스 포인트에 도착했을 때 그것은 빠르게 악몽이되었습니다. 나는 그 이후로 더 많은 통합을하려고 노력했다. 이로 인해 유지해야 할 코드가 줄어 듭니다. 그러나 내가 말했듯이, 그것은 매우 주관적입니다.

테스트 전용 코드까지는 별도의 코드를 유지합니다. com.foo.test 에만 상주하는 패키지 src/test/java 나무.

다른 팁

나도 테스트를 동일한 패키지에 넣지 만 다른 루트 디렉토리 아래에 놓는 경향이 있습니다. 이를 통해 패키지의 다른 것을 테스트하면서 패키지-민간 클래스를 테스트하거나 포장-민간 클래스에 액세스 할 수 있습니다. 배포 된 결과에서 제외 할 수 있도록 별도의 디렉토리 트리에 보관됩니다 (특히 테스트 코드가 실수로 생산 코드에 들어 가지 않도록). 그러나 가장 중요한 것은 상황에 맞는 것입니다.

생산 수업 당 테스트 클래스의 수와 관련하여, 내가 본 이론은 고정 당 하나의 테스트 클래스, 즉 설정 구조 당 하나의 테스트 클래스를 작성한다는 것입니다. 많은 경우 생산 클래스 당 하나의 테스트 클래스와 동일하거나 충분히 가깝지만 때로는 생산 수업을 제공하기 위해 더 많은 테스트 클래스 (특히 평등 테스트가 분리되는 경향이 있음)를 작성했으며 때로는 하나의 테스트 클래스를 작성했습니다. (관련) 생산 클래스 그룹의 경우 (예 : 전략 패턴을 테스트하기 위해).

대부분, 나는 이론에 대해 너무 걱정하지 않지만, 복제를 절대 최소로 유지하기 위해 필요에 따라 테스트를 재 작업합니다.

테스트 클래스는 다른 패키지에 있어야하며, 릴리스를 위해 패키지를 만들 때 프로덕션 코드와 분리하는 것이 더 쉽습니다. 나는 보통 그 패키지, 모든 종류의 모의, 구성, 시나리오에 많은 테스트 보풀을 유지합니다. 그러나 구축 할 때 - 그것을 얻지 못합니다. 어떤 상황에서는 다른 프로젝트에서도 테스트를 유지하는 것이 좋습니다. 의존합니다.

동일한 패키지를 유지하면 테스트를 통해서만 액세스 할 수있는 코드에 대한 패키지-민간 가시성을 사용할 수 있습니다.

별도의 루트 디렉토리 사용과 관련하여 좋은 관행입니다. 또한 아이디어를 사용하기 때문에 아이디어는 생산 코드가 테스트 코드를 참조 할 수 없다는 것을 인식합니다.

그것들을 별도로 유지한다는 측면에서, 단위 수준에서 생산 클래스 당 하나의 테스트 클래스 만있는 데 큰 힘이 있습니다. 물론, 일부 클래스는 테스트 클래스가 전혀없는 리팩토링의 일부로 제작에서 만들어지고 괜찮습니다. 그러나 특정 클래스를 테스트하는 테스트를 알고 싶을 때 Classnametest가 클래스 이름에 대한 테스트라고 말하는 컨벤션이 있습니다. 매우 도움이됩니다.

그러나 Testng은 Junit 보다이 패러다임에 훨씬 더 친숙합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top