Apache Maven
Maven Surefire Plugin
수색…
통사론
- mvn 테스트
- mvn -Dtest = com.example.package.ExampleTest 테스트
JUnit 및 Maven Surefire 플러그인을 사용하여 Java 클래스 테스트
Maven Surefire 플러그인은 Maven 빌드 프로세스의 테스트 단계 또는 test
가 Maven 목표로 지정 될 때 실행됩니다. 다음 디렉터리 구조와 최소 pom.xml
파일은 Maven이 테스트를 실행하도록 구성합니다.
프로젝트의 루트 디렉토리 안에있는 디렉토리 구조 :
─ project_root
├─ pom.xml
├─ src
│ ├─ main
│ │ └─ java
│ └─ test
│ └─ java
└─ target
└─ ...
pom.xml
내용 :
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>company-app</artifactId>
<version>0.0.1</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
프로젝트의 src/test/java/com/example/app
디렉토리에 다음 내용으로 PlusTenTest.java
라는 파일을 만듭니다.
package com.example.app;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class PlusTenTest {
@Test
public void incrementTest() {
int result = PlusTen.increment(10);
assertEquals("PlusTen.increment(10) result", 20, result);
}
}
주석 @Test
는 JUnit에게 Maven 빌드 프로세스의 test
단계에서 incrementTest()
를 테스트로 실행해야한다고 알립니다. 이제 src/main/java/com/example/app
PlusTen.java
를 만듭니다.
package com.example.app;
public class PlusTen {
public static int increment(int value) {
return value;
}
}
명령 프롬프트를 열고 프로젝트의 루트 디렉토리로 이동 한 후 다음 명령을 호출하여 테스트를 실행하십시오.
mvn -Dtest=com.example.app.PlusTenTest test
Maven은 프로그램을 컴파일하고 PlusTenTest
에서 incrementTest()
테스트 메소드를 실행합니다. 테스트는 다음 오류와 함께 실패합니다.
...
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.005 sec <<< FAILURE! - in com.example.app.PlusTenTest
incrementTest(com.example.app.PlusTenTest) Time elapsed: 0.004 sec <<< FAILURE!
java.lang.AssertionError: PlusTen.increment(10) result expected:<20> but was:<10>
at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.failNotEquals(Assert.java:743)
at org.junit.Assert.assertEquals(Assert.java:118)
at org.junit.Assert.assertEquals(Assert.java:555)
at com.example.app.PlusTenTest.incrementTest(PlusTenTest.java:12)
Results :
Failed tests:
PlusTenTest.incrementTest:12 PlusTen.increment(10) result expected:<20> but was:<10>
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.749 s
[INFO] Finished at: 2016-09-02T20:50:42-05:00
[INFO] Final Memory: 14M/209M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project app: There are test failures.
...
Maven Surefire 플러그인은 프로젝트의 디렉토리에 /target/surefire-reports/
디렉토리를 생성합니다. com.example.app.PlusTenTest.txt
파일과 TEST-com.example.app.PlusTenTest.xml
파일에는 시작 부분의 오류 정보가 들어 있습니다 위 출력의.
테스트 주도 개발 패턴에 따라 PlusTen.java
수정하여 increments()
메서드가 올바르게 작동하도록합니다.
package com.example.app;
public class PlusTen {
public static int increment(int value) {
return value + 10;
}
}
명령을 다시 호출하십시오.
mvn -Dtest=com.example.app.PlusTenTest test
테스트 통과 :
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running com.example.app.PlusTenTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.028 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.753 s
[INFO] Finished at: 2016-09-02T20:55:42-05:00
[INFO] Final Memory: 17M/322M
[INFO] ------------------------------------------------------------------------
축하해! JUnit과 Maven Surefire 플러그인을 사용하여 Java 클래스를 테스트했습니다.