对于当今的大多数Java项目,JUnit本身还远远不够。 您还需要一个模拟库,也许还有其他东西。 在此迷你操作指南中,我介绍了可以在新的Java项目中开始的测试依赖项。

一切都始于JUnit

Maven存储库中的junit组中有两个工件: junitjunit-dep 。 在4.9版之前,后者不包含对内联的Hamcrest的依赖。 今天,我们使用junit依赖关系如下:

<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope>
</dependency>

dependency:tree产生:

[INFO] \- junit:junit:jar:4.11:test
[INFO]    \- org.hamcrest:hamcrest-core:jar:1.3:test

莫基托

我们通常需要的下一个依赖关系是一个模拟框架。 毫无疑问, Mockito是最受欢迎的游戏之一。 它有两个好处: mockito-allmockito-core 。 第一个是将所有依赖项内联到其中的单个jar,而后者只是Mockito。 建议将mockito-core与JUnit版本4.11一起使用。 因此,我们添加依赖项:

<dependency><groupId>org.mockito</groupId><artifactId>mockito-core</artifactId><version>1.9.5</version><scope>test</scope>
</dependency>

现在, dependency:tree产生:

[INFO] +- junit:junit:jar:4.11:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] \- org.mockito:mockito-core:jar:1.9.5:test
[INFO]    \- org.objenesis:objenesis:jar:1.0:test

Hamcrest

知道mockito-core更适合于声明式依赖性管理,因此我们将重写对Hamcrest和Objenesis的依赖性,如下所示:

<dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-core</artifactId><version>1.3</version><scope>test</scope>
</dependency><dependency><groupId>org.objenesis</groupId><artifactId>objenesis</artifactId><version>1.3</version><scope>test</scope>
</dependency>

有了这个,我们可以轻松地添加Hamcrest库,该库提供了一个依赖对象的依赖项库:

<dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-core</artifactId><version>1.3</version><scope>test</scope>
</dependency><dependency><groupId>org.objenesis</groupId><artifactId>objenesis</artifactId><version>1.3</version><scope>test</scope>
</dependency>

并且dependency:tree产生:

[INFO] +- junit:junit:jar:4.11:test
[INFO] +- org.mockito:mockito-core:jar:1.9.5:test
[INFO] +- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- org.hamcrest:hamcrest-library:jar:1.3:test
[INFO] \- org.objenesis:objenesis:jar:1.3:test

断言

AssertJ – Java的流畅断言–提供了一组丰富且直观的强类型断言,可用于单元测试。 AssertJ是FEST Assert的一个分支,我前一段时间在这篇文章中写过。 那依赖性呢? 让我们来看看:

<dependency><groupId>org.assertj</groupId><artifactId>assertj-core</artifactId><version>1.5.0</version><scope>test</scope>
</dependency>

结果如下树:

[INFO] +- junit:junit:jar:4.11:test
[INFO] +- org.mockito:mockito-core:jar:1.9.5:test
[INFO] +- org.assertj:assertj-core:jar:1.5.0:test
[INFO] +- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- org.hamcrest:hamcrest-library:jar:1.3:test
[INFO] \- org.objenesis:objenesis:jar:1.3:test

最终剪辑

完整的Maven结构如下所示:

<!-- Test -->
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope>
</dependency>
<dependency><groupId>org.mockito</groupId><artifactId>mockito-core</artifactId><version>1.9.5</version><scope>test</scope>
</dependency>
<dependency><groupId>org.assertj</groupId><artifactId>assertj-core</artifactId><version>1.5.0</version><scope>test</scope>
</dependency>
<dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-core</artifactId><version>1.3</version><scope>test</scope>
</dependency>
<dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-library</artifactId><version>1.3</version><scope>test</scope>
</dependency>
<dependency><groupId>org.objenesis</groupId><artifactId>objenesis</artifactId><version>1.3</version><scope>test</scope>
</dependency>
  • 您可以在GitHub上的unit-testing-demo项目中找到此链接(链接到pom.xml ),也可以尝试我的spring-mvc-quickstart-archetype (链接到pom.xml )。
参考:操作方法:在Codeleak.pl博客上,从我们的JCG合作伙伴 Rafal Borowiec中测试Maven项目(JUnit,Mockito,Hamcrest,AssertJ)中的依赖项 。

翻译自: https://www.javacodegeeks.com/2014/03/how-to-test-dependencies-in-a-maven-project-junit-mockito-hamcrest-assertj.html

如何:在Maven项目(JUnit,Mockito,Hamcrest,AssertJ)中测试依赖项相关推荐

  1. maven mockito_如何:测试Maven项目(JUnit,Mockito,Hamcrest,AssertJ)中的依赖项

    maven mockito 对于当今的大多数Java项目而言,JUnit本身还远远不够. 您还需要一个模拟库,也许还有其他东西. 在此迷你操作指南中,我介绍了可以在新的Java项目中开始的测试依赖项. ...

  2. IDEA导入Maven项目,pom.xml文件中 有inspects a maven model for resolution problems报错 !!!!!!!!!!有用

    IDEA导入Maven项目,pom.xml文件中 有inspects a maven model for resolution problems报错 2018年08月06日 22:13:09 东方不能 ...

  3. IDEA解决Maven项目编译后classes文件中没有.xml或.properties问题

    IDEA解决Maven项目编译后classes文件中没有.xml或.properties问题 方式一.在 pom.xml 中添加下面的代码 <build><!--解决Maven项目编 ...

  4. 如何在Gradle多项目构建中管理依赖项

    从很早以前我就一直喜欢Gradle构建工具. 它的潜力甚至在1.0版本之前就已经很明显了,那时变化经常被打破. 如今,升级很少会引起意外. 该工具已经成熟并且运行良好. Gradle包括一个功能强大的 ...

  5. 使用Maven在jar中包含依赖项

    本文翻译自:Including dependencies in a jar with Maven Is there a way to force maven(2.0.9) to include all ...

  6. 问题:为命名空间,在此被用作类型和此项目作为引用添加将导致循环依赖项

    两个问题: 1.此项目作为引用添加将导致循环依赖项 说明你的两个项目中互相添加了引用.例如你再SQLTest中添加了Sineva.Entity,然后在Sineva.Entity中添加引用SQLTest ...

  7. asp.net 将此项目作为引用添加将导致循环依赖项

    未能添加对"SystemFramework" 的引用.将此项目作为引用添加将导致循环依赖项. 避免该错误发生的方式: 1个工程里有A和B两个项目,在A里引用了B,在B里也引用了A就 ...

  8. 去除maven父依赖_如何在Maven中从父项目中排除依赖项?

    我遇到了和你一样的问题. 在我的项目中,让我们称父pom为parent.pom. parent定义了log4j,slf4j是这样的: org.slf4j slf4j-api ${slf4j-api.v ...

  9. IDEA将maven项目配置到本地tomcat中运行

    想写个 WebSocket的简单应用,但是maven的jetty或tomcat的插件,不支持WebSocket.想办法把它配置到下载的tomcat中运行.. 1. Run->Edit Confi ...

最新文章

  1. 部署篇01:Linux 安装配置JDK
  2. JavaScript为什么使用原型模式而不是类模式
  3. Laravel解决报错500 Server Error: .env.example将其复制一份重命名为env
  4. php抑制错误,PHP 行内错误抑制
  5. [ZJOI2007]矩阵游戏
  6. php怎么获取分类数,php 两种获取分类树的方法
  7. HDU 5976 2016ICPC大连 F: Detachment(找规律)
  8. 数据通路习题分析之二
  9. java编程思想笔记(一)——面向对象导论
  10. lopatkin俄大神精简中英俄系统Windows 10 Home 18362.145 19H1 Release x86-x64 RU-EN-CN NANO
  11. 知道对方IP,你该这样入侵(附:如何隐藏IP地址)
  12. android系统解压zip文件,如何在Android手机上解压缩rar / zip文件
  13. java excel 打勾_在excel中如何打钩
  14. 【[中文直播] 第21期 | UE4数据驱动开发 | Epic 大钊】课程笔记
  15. 敏捷开发培训部分讲义内容
  16. 中蜂几月份自然分蜂_中蜂一年自然分蜂几次?_库百科养蜂养殖
  17. 阳光直射对计算机有影响吗,办公电脑需要注意的风水
  18. 【操作说明】4G网络摄像机国标GB28181协议视频平台EasyGBS如何配置告警白名单?
  19. 【黑马Java并发笔记】三、互斥与同步(上)
  20. 两个博士读完,学术能力翻一倍?Nature专访三位「双料博士」

热门文章

  1. mfc定义了变量仍提示未定义标识符_JavaScript-变量
  2. 通过aws部署推荐系统_通过AWS Elastic Beanstalk轻松进行Spring Boot部署
  3. java streams_使用Stream.peek在Java Streams内部进行窥视
  4. oidc auth2.0_使用Spring Security 5.0和OIDC轻松构建身份验证
  5. apache kafka_Apache Kafka简介
  6. dynamodb容器使用_使用DynamoDBMapper插入DynamoDB项目
  7. jcache_随机JCache内容:多个提供程序和JMX Bean
  8. java开发用怎么软件开发_Java 9中的5个功能将改变您开发软件的方式(还有2个不会)...
  9. apache mesos_在Twitter上使用Apache Mesos和Apache Aurora进行资源调度和任务启动
  10. gtest 测试部分_全部关于测试–第2部分