Maven学习三:使用junit测试maven project
阅读原文时间:2021年04月20日阅读:1

每个开发人员都会对自己的代码进行自定义的测试,可以是把项目run起来,手动点点页面按钮,看看操作场景和步骤点是否符合业务需要,是否存在UE上的问题。也有自己写几个测试类,把service类的输入输出是否符合标准都测试一番,这两大类,其实就是包括了前后端的测试工作,分工各有不同。在maven中集成了junit测试包,应该说maven可以集成任何你想的到或者想不到工具插件。

在maven project-01项目中引入junit插件并不困难,只需要在pom.xml中配置好依赖包即可(IDE环境下,依赖项会自动生成)。剩下的测试代码的编写并没有任何不同。另外,test类文件需要按照/src/main/java/的文件结构(main改为test)。

test文件夹结构如下图:

还需要修改pom.xml文件,增加dependencies项,改后的pom.xml内容如下:

[html]  view plain copy print ?

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  3. <modelVersion>4.0.0</modelVersion>

  4. <groupId>jizg.study.maven.hello</groupId>

  5. <artifactId>hello-first</artifactId>

  6. <version>0.0.1-SNAPSHOT</version>

  7. <dependencies>

  8. <dependency>

  9. <groupId>junit</groupId>

  10. <artifactId>junit</artifactId>

  11. <version>4.10</version>

  12. <scope>test</scope>

  13. </dependency>

  14. </dependencies>

  15. </project>

    接下来在/src/test/java/jizg/study/maven/hello 文件夹下创建TestHello.java文件,这里需要注意,test的包结构可以自定义,要注意必备的路径为/src/test/java/,TestHello.java内容如下:

[html] view plaincopyprint?

  1. package jizg.study.maven.hello;

  2. import org.junit.*;

  3. import static junit.framework.Assert.*;

  4. import jizg.study.maven.hello.*;

  5. public class TestHello{

  6. @Test

  7. public void testHello(){

  8. Hello h = new Hello();

  9. assertEquals(h.sayHello("jizg"),"hello :jizg");

  10. }

  11. }

    最后,改好pom.xml和test类文件之后,可以输入mvn test命令,这会重新把项目build出来,并且输出TestHello.java中的test信息。

控制台输出如下:

[html] view plaincopyprint?

  1. D:\study\maven\01>mvn test

  2. [INFO] Scanning for projects…

  3. [INFO]

  4. [INFO] ------------------------------------------------------------------------

  5. [INFO] Building hello-first 0.0.1-SNAPSHOT

  6. [INFO] ------------------------------------------------------------------------

  7. [INFO]

  8. [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ hello-firs

  9. t ---

  10. [WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e

  11. . build is platform dependent!

  12. [INFO] skip non existing resourceDirectory D:\study\maven\01\src\main\resources

  13. [INFO]

  14. [INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ hello-first -

  15. --

  16. [INFO] Nothing to compile - all classes are up to date

  17. [INFO]

  18. [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ he

  19. llo-first ---

  20. [WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e

  21. . build is platform dependent!

  22. [INFO] skip non existing resourceDirectory D:\study\maven\01\src\test\resources

  23. [INFO]

  24. [INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ hello

  25. -first ---

  26. [WARNING] File encoding has not been set, using platform encoding GBK, i.e. buil

  27. d is platform dependent!

  28. [INFO] Compiling 1 source file to D:\study\maven\01\target\test-classes

  29. [INFO]

  30. [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ hello-first ---

  31. [INFO] Surefire report directory: D:\study\maven\01\target\surefire-reports

  32. -------------------------------------------------------

  33. T E S T S

  34. -------------------------------------------------------

  35. Running test.TestHello.TestHello

  36. Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.151 sec

  37. Results :

  38. Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

  39. [INFO] ------------------------------------------------------------------------

  40. [INFO] BUILD SUCCESS

  41. [INFO] ------------------------------------------------------------------------

  42. [INFO] Total time: 5.346s

  43. [INFO] Finished at: Wed Oct 02 18:23:23 CST 2013

  44. [INFO] Final Memory: 9M/22M

  45. [INFO] ------------------------------------------------------------------------

  46. D:\study\maven\01>

    细心的朋友还会发现,在project-01目录下,新生成了一个target(项目输出)文件夹,下面包括surefire-reports(测试结果)和编译过后的class文件。mvn test可以很好的支持单元测试,maven下的好多命令可以完成其中奇葩怪异的任务,并且mvn 命令支持串行执行。比如,mvn  install、mvn clean build等等。