maven工程结构
$ tree . /F
D:~\DESKTOP\TEST\MY_PROJECT
│ pom.xml
│
├───src
│ ├───main
│ │ └───java
│ │ └───com
│ │ └───example
│ │ Hello.java
│ │
│ └───test
│ └───java
│ └───com
│ └───example
│ HelloTest.java
│
└───target
├───classes
└───test-classes
pom.xml内容
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>my_project</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Hello.java内容
package com.example;
public class Hello {
public static String say() {
return "hello";
}
}
HelloTest.java内容
package com.example;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
class HelloTest {
@Test
void say() {
assertEquals("hello", Hello.say());
}
}
下载maven依赖到本地仓库
$ mvn dependency:resolve
编译Hello.java
$ javac -d "target/classes" "src/main/java/com/example/Hello.java"
运行后,target/classes
目录下生成class文件。
编译HelloTest.java
$ javac \
-cp "target/classes;\
C:\Users\zc\.m2\repository\org\junit\jupiter\junit-jupiter-api\5.8.2\junit-jupiter-api-5.8.2.jar;\
C:\Users\zc\.m2\repository\org\apiguardian\apiguardian-api\1.1.2\apiguardian-api-1.1.2.jar" \
-d "target/test-classes" \
"src/test/java/com/example/HelloTest.java"
HelloTest.java 中引用了 Hello 和一些 junit 相关以依赖,要在 -cp 中指定。
运行后,target/test-classes
目录下生成class文件。
命令行执行测试
使用junit5实现类jar包(内部打包了所有junit相关依赖)来执行测试。
下载junit-platform-console-standalone-1.8.2.jar
:Central Repository: org/junit/platform/junit-platform-console-standalone (maven.org)
把它放到工程同级目录下。
(1)测试某个类:
$ java -jar ../junit-platform-console-standalone-1.8.2.jar \
-cp="D:\code\java\mvn_demo\target\test-classes;D:\code\java\mvn_demo\target\classes" \
-c=com.example.HelloTest
-cp 要包含 HelloTest.class,还要包含 Hello.class(因为HelloTest.class中有引用)。
(2)测试某个方法:
$ java -jar ../junit-platform-console-standalone-1.8.2.jar \
-cp="D:\code\java\mvn_demo\target\test-classes;D:\code\java\mvn_demo\target\classes" \
-m=com.example.HelloTest#say
输出结果:
Thanks for using JUnit! Support its development at https://junit.org/sponsoring
.
+-- JUnit Jupiter [OK]
| '-- HelloTest [OK]
| '-- say() [OK]
'-- JUnit Vintage [OK]
Test run finished after 134 ms
[ 3 containers found ]
[ 0 containers skipped ]
[ 3 containers started ]
[ 0 containers aborted ]
[ 3 containers successful ]
[ 0 containers failed ]
[ 1 tests found ]
[ 0 tests skipped ]
[ 1 tests started ]
[ 0 tests aborted ]
[ 1 tests successful ]
[ 0 tests failed ]