Programing

동일한 프로젝트에서 Eclipse junit 테스트

crosscheck 2021. 1. 7. 19:42
반응형

동일한 프로젝트에서 Eclipse junit 테스트


이것은 비교적 열린 질문입니다. Eclipse의 프로젝트에서 애플리케이션을 빌드 한 후이 프로젝트를 테스트하려면 동일한 프로젝트 내에서 JUnit 코드를 작성하거나 별도의 프로젝트를 작성해야합니다. 예를 들어 ...

ShopSystem내 주 프로젝트의 이름 일 수 있습니다. say라는 프로젝트를 만들어야 ShopSystemTest합니까?

일반적으로 테스트 코드가 메인 프로젝트 폴더에서 얼마나 멀리 떨어져 있어야합니까? 메인 프로젝트 내에 테스트 코드를 저장 한 다음 메인 프로젝트를 실행 가능한 jar로 내 보내면 테스트 코드도 함께 가져 오는데 이상적이지 않습니다.

제안?


올바른 방법은 없지만 일반적인 접근 방식은 동일한 프로젝트에서 단위 테스트를 유지하는 것입니다.

두 번째 소스 폴더 (예 test:)를 생성하여 테스트 클래스를 테스트중인 클래스와 동일한 패키지에 넣을 수 있습니다. 또한 테스트 클래스로 메인 소스 패키지를 넘치지 않으면 서 패키지 전용 클래스를 테스트 할 수 있습니다.

소스 폴더 / 패키지 구조는 다음과 같습니다.

-sources
   -main
       -my.package
             -MyClass.java
   -test
       -my.package
             -MyClassTest.java

그런 다음 testJAR을 압축 할 때 소스 폴더를 포함하지 않도록 빌드를 구성 할 수 있습니다 .


나는 메이븐 컨벤션을 많이 좋아한다. 같은 프로젝트에 메인과 테스트를위한 별도의 소스 트리가 있고, 메인 코드는 배포되고 테스트 코드는 그렇지 않다. 패키지 구조는 동일 할 수 있지만 반드시 동일 할 필요는 없습니다.

project
    src
        main
             java      // source files
             resources // xml, properties etc
        test
             java      // source files
             resources // xml, properties etc

그리고 이클립스에서를 선택할 때 new -> JUnit test case소스 폴더를 src / test / java로 변경하고 제안 된 패키지를 그대로 둡니다.

(동일한 패키지에 남아있는 이점 중 하나는 보호 및 패키지 범위 멤버에 액세스 할 수 있다는 것입니다. 이는 '적절한'단위 테스트 동작은 아니지만)


업데이트 : 마지막 요점을 설명하는 몇 가지 코드는 다음과 같습니다.

메인 클래스 (src / main / java) :

package com.test;
public class Foo{

    static class Phleem{
        public Phleem(final String stupidParameter){
        }
    }

    String bar;
    protected String baz;
    protected Object thingy;

}

테스트 클래스 (src / test / java) :

package com.test;
import org.junit.Test;

public class FooTest{

    @Test
    public void testFoo(){
        final Foo foo = new Foo();
        foo.bar = "I can access default-scoped members";
        foo.baz = "And protected members, too";
        foo.thingy = new Foo.Phleem("And I can access default-scoped classes");
    }

}

일반적으로-

/src/main/java   (for codes)

/src/test/java   (for tests)

Maven 방식을 고려하십시오. Maven 프로젝트에서 소스는 이러한 방식으로 구성됩니다.

src
 |--main
 |     |--java
 |--test
       |--java

소스 코드는 src / main / java로, junit 테스트 코드는 src / test / java로, 둘 다 소스 폴더입니다 (결과적으로 jUnit 코드를 Java 코드와 동일한 패키지에 넣을 수 있지만 다른 소스 폴더).

일반적인 코딩의 경우 jUnit 클래스가 코드 패키지에 있지만 jar 생성시에는 src / main / java에서만 클래스를 가져오고 테스트를 릴리스 할 수는 없습니다.

ReferenceURL : https://stackoverflow.com/questions/3573842/eclipse-junit-testing-in-the-same-project

반응형