Programming

JUnit 클래스를 특수 테스트 패키지로 분리 하시겠습니까?

procodes 2020. 7. 27. 08:05
반응형

JUnit 클래스를 특수 테스트 패키지로 분리 하시겠습니까?


이전 질문 인 "JUnit 학습 및 올바른 소프트웨어 엔지니어링을위한 샘플 프로젝트" 에 대한 답변으로 추천 된 Craftsman 기사 ( To Topic 아래의 Craftsman 클릭) 를 읽음으로써 테스트 주도 개발의 개념 을 배우고 있습니다. 나는 지금까지 그것을 좋아한다!

그러나 지금 나는 앉아서 직접 시도하고 싶습니다. 간단한 답변 만 있으면되기를 바랍니다.

JUnit 테스트 클래스와 실제 코드는 어떻게 구성합니까? 나는 주로 패키지 구조에 대해 이야기하고 있지만 다른 개념도 도움이 될 것입니다.

테스트 클래스를 org.myname.project.test. *에, 일반 코드를 org.myname.project. *에 넣습니까? 테스트 클래스를 일반 클래스와 함께 배치합니까? 클래스 이름 앞에 접미어가 아닌 Test를 선호합니까?

나는 이것이 내가 그렇게 걱정하지 말아야 할 종류의 것처럼 보인다는 것을 알고 있지만, 나는 조직 중심의 사람입니다. 거의 오히려 실제로 일을 얻는 것보다 수행하려면 무엇을 추적하는 방법을 알아내는 더 많은 시간을 소비하는 사람의 종류.

그리고 현재 깔끔하게 패키지로 나뉘어 진 프로젝트가 있지만 프로젝트가 엉망이되었습니다. 모든 것을 리팩토링하고 테스트를 작성하는 대신 새로운 테스트를 시작하고 싶습니다. 그러나 먼저 시험이 어디로 가야하는지 알아야합니다.


편집 : 나는 Maven을 완전히 잊어 버렸지 만 대다수가 그것을 사용하고있는 것 같습니다! 과거에는 Maven이 완전히 고장난 특정 사용 사례가 있었지만 Ant가 필요한 유연성을 제공했기 때문에 Ant에 연결되었지만 결국 잘못된 접근법을 사용하고 있다고 생각합니다. 테스트 중심 개발과 잘 어울리는 것처럼 들리기 때문에 Maven에 다시 시도해 볼 것입니다.


테스트 클래스를 테스트하는 프로젝트 클래스와 동일한 패키지에 배치하지만 다음과 같은 다른 실제 디렉토리에 배치하는 것을 선호합니다.

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

Maven 프로젝트에서는 다음과 같습니다.

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

이것의 주요 요점은 내 테스트 클래스가 패키지 범위 클래스 및 멤버에 액세스하고 테스트 할 수 있다는 것입니다.

위의 예에서 볼 수 있듯이 테스트 클래스에는 테스트 클래스 이름과 Test접미사가 있습니다. 이것은 그것들을 빨리 찾는 데 도움이됩니다. 각각의 이름으로 시작하는 수백 개의 테스트 클래스 중에서 검색하는 것은 그리 재미 있지 않습니다 Test...

@Ricket의 의견에서 영감을 얻은 업데이트 : 테스트 방식 (일반적으로)은 테스트 된 친구 바로 다음에 프로젝트 방식의 알파벳순으로 된 클래스 이름 목록에 표시됩니다. (나는 의식적으로 어떻게 깨닫지 못하고 매일 매일이 혜택을 받고 있음을 재미있다 ...)

Update2 : Maven과 같은 많은 개발자 (자신을 포함하여)이지만 적어도 그렇지 않은 사람이 많은 것 같습니다. IMHO "주류"Java 프로젝트에 매우 유용합니다 (프로젝트의 약 90 %를이 범주에 넣을 것입니다. 그러나 다른 10 %는 여전히 상당한 소수입니다). Maven 규칙을 수락 할 수 있으면 사용하기 쉽습니다. 그러나 그렇지 않다면 그것은 인생을 비참한 투쟁으로 만듭니다. Maven은 Ant에 대해 사회화 된 많은 사람들에게 이해하기 어려운 것 같습니다. 분명히 다른 사고 방식이 필요하기 때문입니다. (나 자신도 Ant를 사용해 본 적이 없다면 두 가지를 비교할 수는 없다.) 한 가지 확실한 점은 단위 (및 통합) 테스트를 프로세스에서 자연스럽고 일류 단계로 만들어 개발자가이 필수 사례를 채택하는 데 도움이된다는 것이다.


테스트 클래스를 테스트하는 패키지와 동일한 패키지 에 다른 소스 폴더 또는 프로젝트에 넣었습니다 . 이 방식으로 테스트 코드를 구성하면 프로덕션 jar 파일에 테스트 코드가 포함되지 않도록 쉽게 컴파일하고 개별적으로 패키지화 할 수 있습니다. 또한 테스트 코드가 패키지 개인 필드 및 메소드에 액세스 할 수 있습니다.


나는 Maven을 사용 합니다. Maven이 홍보하는 구조는 다음과 같습니다.

src/main/java/org/myname/project/MyClass.java

src/test/java/org/myname/project/TestMyClass.java

즉, 테스트중인 클래스 이름 앞에 Test가 붙은 테스트 클래스는 기본 테스트와 병렬 디렉토리 구조입니다.

동일한 패키지 (디렉토리는 아니지만)에 테스트 클래스를 두는 장점 중 하나는 패키지 범위 메소드를 사용하여 모의 테스트 오브젝트를 검사하거나 주입 할 수 있다는 것입니다.

참고 URL : https://stackoverflow.com/questions/2388253/separation-of-junit-classes-into-special-test-package

반응형