17网站一起做网店不发货,欢迎访问中国建设银行网站个人客户,2019建设银行招聘网站,大良营销网站建设市场使用类似BDD的语法#xff0c;Java 8和Mockito-AssertJ二重奏为Idea调整JUnit测试类模板。 本文涵盖的主题似乎很简单。 但是#xff0c;根据我的培训师经验#xff0c;我知道#xff08;不幸的是#xff09;这不是常见的做法。 因此#xff0c;我决定写这篇简短的博客文… 使用类似BDD的语法Java 8和Mockito-AssertJ二重奏为Idea调整JUnit测试类模板。 本文涵盖的主题似乎很简单。 但是根据我的培训师经验我知道不幸的是这不是常见的做法。 因此我决定写这篇简短的博客文章来传播它们并在将来能够引用它。 我最喜欢的Java和Groovy测试框架是Spock 。 但是它的模拟不适用于某些目的我仍然在各种地方使用Mockito。 此外我仍然针对已经在该堆栈中具有测试套件并且希望在不更改已知技术的情况下提高其技能的团队在JUnit / Mockito / AssertJ变体中进行很多测试培训 。 因此作为一个插曲此博客文章介绍了纯Java风格的测试并假设您已经在使用Mockito和AssertJ如果在其他情况下请尝试一下则建议如何调整JUnit测试框架。 此博客文章由树部分组成。 首先我提出了一种BDD样式的基于节的测试结构以使您的测试更一致更易读。 接下来我将说明如何使用Java 8使用AssertJ和Mockito进行简化。最后但并非最不重要的一点是我将展示如何在IntelliJ IDEA中将其配置为默认的JUnit测试类模板这并不简单这应该。 第1部分。BDD样式的部分 编写良好的单元测试应满足几个要求但这是单独发布的主题。 有用的做法之一是将3个代码块明确划分为具有明确定义的职责。 您可以在我以前的博客文章中阅读有关该主题的更多信息 。 作为重复仅以简短形式列出了核心规则 given –测试中的对象初始化存根/模拟的创建存根和注入 when –在给定测试中进行测试的操作 then –收到结果声明模拟验证如果需要 Test
public void shouldXXX() {//given...//when...//then...
} 这种分离有助于保持测试的简短性并将重点放在测试的一项责任上最终这只是一个单元测试。 在Spock中这些部分是必填*–没有它们测试甚至无法编译。 在JUnit中只有注释。 但是将它们放置在适当位置会鼓励人们使用它们而不是在内部放置一大堆混乱对于在测试区域中的新手尤其有用。 顺便说一句提到的“先给后定”约定基于更广泛的“ 行为驱动开发”概念是其子集。 您可能会在3个代码块上遇到类似的划分这些代码块称为ranging-act-assert通常等效。 第2部分。AssertJ和Mockito的Java 8 Java 8的功能之一是能够将默认方法放入接口中。 这可以用来简化对静态方法的调用这在测试框架如AssertJ和Mockito中很普遍。 这个想法很简单。 愿意使用给定框架的测试类可以实现专用接口以在IDE中完成代码时将这些方法“视为”它们自己的方法而不是外部类的静态方法这些方法要求在输入类名之前或静态导入 。 那些默认方法只是将执行委托给静态方法。 您可以在我的其他博客文章中了解更多信息 。 AssertJ本机支持从3.0.0版本开始的那些构造。 Mockito 1.10和2.x与Java 6兼容因此需要使用一个第三方项目– mockito-java8 一旦可用应将其集成到Mockito 3中。 为了从Idea中更轻松的方法完成中受益实现两个接口就足够了 import info.solidsoft.mockito.java8.api.WithBDDMockito;
import org.assertj.core.api.WithAssertions;class SampleTest implements WithAssertions, WithBDDMockito {}第3部分。Idea中的默认模板 我是无所不在的自动化的狂热爱好者。 在测试类中同时自动设置“先给定”部分和额外的接口这不是很好吗 让我们从生活中消除那些无聊的事情。 测试方法 更改JUnit测试方法很容易。 一种可能的方式是“ CTRL-SHIFT-A-文件模板-代码”并将JUnit4 Test Method修改为 org.junit.Test
public void should${NAME}() {//given${BODY}//when//then
} 要在现有测试类中添加新测试只需按ALT-INSERT并选择或键入 JUnit4 Test Method 。 测试班 在整个测试课程中情况要复杂一些。 Idea提供了一种编辑现有模板的方法但是仅当使用生产类中的CTRL-SHIFT-T生成测试时才使用该方法。 对于TDD首先要创建一个测试不是很方便。 如果在测试上下文中的程序包视图中按了ALT-INSERT则最好在“ Java类”旁边显示一个新位置“ New JUnit测试类”。 不幸的是要做到这一点就需要编写一个新插件Spock的示例实现 。 作为解决方法我们可以定义一个常规文件模板作为限制该模板可在任何地方例如即使在资源目录中访问。 执行“ CTRL-SHIFT-A-文件模板-文件”按INSERT 将模板命名为“具有AssertJ和Mockito Test的JUnit”将扩展名设置为“ java”然后粘贴以下模板 package ${PACKAGE_NAME};import info.solidsoft.mockito.java8.api.WithBDDMockito;
import org.assertj.core.api.WithAssertions;#parse(File Header.java)
public class ${NAME} implements WithAssertions, WithBDDMockito {}展示柜 我们已经准备好了。 让我们检查一下它在实际中的外观单击以放大动画。 摘要 我希望我说服您调整测试模板以提高测试的可读性并确保每个测试几次击键。 在这种情况下请立即花费4分钟在您的Idea中对其进行配置。 根据编写的许多测试它可能会比您期望的更快开始回报)。 顺便说一句十月初我将在克拉科夫的JDD 上介绍 Mockito 2的新功能。 自我提升 。 您想快速有效地提高您和您的团队的测试技能以及对Spock / JUnit / Mockito / AssertJ的了解吗 我进行了浓缩单元 测试培训 您可能会觉得有用。 翻译自: https://www.javacodegeeks.com/2017/09/modern-tdd-oriented-java-8-junit-test-template-idea-mockito-assertj.html