转自:https://blog.csdn.net/wangyj1992/article/details/78387728 

因为项目的需要,所以研究了一下自动生成测试代码。将经验记录下来,总会有用的。我个人认为,好记性不如多做笔记多反思总结。

1.    前提条件

  • 开发环境已正确配置
  • 工程已解决JUnit依赖关系(pom.xml)
  • 我用的是4.12版本:
    1 <dependency>
    2 <groupId>junit</groupId>
    3 <artifactId>junit</artifactId>
    4 <version>4.12</version>
    5 </dependency>

2.    IDEA中JUnit配置

  打开Settings窗口搜索junit,如图(两个插件都勾选添加):

  JUnitGenerator V2.0插件,可以帮助我们自动生成测试代码。如果搜索junit没有JUnitGenerator V2.0时,如下图操作(下载添加):

  调用模板的方法(Alt+Insert)默认测试所有所有方法。若想要动态个性化生成,可以在所要测试的类页面上,使用该快捷操作Ctrl + Shift + T,如下图个性化设置:

  现在可以通过右键菜单在这个类上运行'***测试类名**'来进行测试,或通过Run → Edit Configurations来进行。

3.    JUnit常用断言及注解

  JUnit为我们提供了一些辅助函数,他们用来帮助我们确定被测试的方法是否按照预期的效果正常工作,通常,把这些辅助函数称为断言。

断言核心方法

注解

  一个测试类单元测试的执行顺序为:

    @BeforeClass –> @Before –> @Test –> @After –> @AfterClass

  每一个测试方法的调用顺序为:

    @Before –> @Test –> @After

  代码示例:

 1 public class JunitFlowTest {
2 /* *
3 *1. @BeforeClass修饰的方法会在所有方法被调用前被执行,
4 * 而且该方法是静态的,所以当测试类被加载后接着就会运行它,
5 * 而且在内存中它只会存在一份实例,它比较适合加载配置文件。
6 * 2. @AfterClass所修饰的方法通常用来对资源的清理,如关闭数据库的连接
7 * 3. @Before和@After会在每个测试方法的前后各执行一次。
8 * */
9 @BeforeClass
10 public static void setUpBeforeClass() throws Exception {
11 System.out.println("this is beforeClass...");
12 }
13 @AfterClass
14 public static void tearDownAfterClass() throws Exception {
15 System.out.println("this is afterClass...");
16 }
17 @Before
18 public void setUp() throws Exception {
19 System.out.println("this is before...");
20 }
21
22 /**
23 * 即使在@Before注解方法、@Test注解方法中抛出了异常,
24 * 所有的@After注解方法依然会被执行
25 */
26 @After
27 public void tearDown() throws Exception {
28 System.out.println("this is after");
29 }
30
31 /* *
32 *
33 * 1. Failure一般由单元测试使用的断言方法判断失败所引起的,
34 * 这经表示测试点发现了问题
35 * ,就是说程序输出的结果和我们预期的不一样。
36 * 2. error是由代码异常引起的,它可以产生于测试代码本身的错误,
37 * 也可以是被测试代码中的
38 * 一个隐藏的bug
39 * 3.测试用例不是用来证明你是对的,而是用来证明你没有错。
40 */
41 @Test
42 public void testAdd() {
43 assertEquals(5, new Calculate().add(3,3));
44 }
45 @Test
46 public void testDivide() {
47 assertEquals(3, new Calculate().divide(6, 0));
48 }
49
50 }

25.怎样在IDEA中使用JUnit4和JUnitGenerator V2.0自动生成测试模块的更多相关文章

  1. 怎样在IDEA中使用JUnit4和JUnitGenerator V2.0自动生成测试模块

     因为项目的需要,所以研究了一下自动生成测试代码.将经验记录下来,总会有用的.我个人认为,好记性不如多做笔记多反思总结. 1.    前提条件 开发环境已正确配置 工程已解决JUnit依赖关系(pom ...

  2. Matlab中使用脚本和xml文件自动生成bus模块

    帮一个老师写的小工具 在一个大工程中需要很多bus来组织信号,而为了规范接口,需要定义很多BusObject,用Matlab语言手写这些BusObject比较费工夫 所以用xml配置文件来写,也便于更 ...

  3. pycharm中每次创建py文件时就自动生成代码头,以及出现SyntaxError:Non-ASCII 。。。问题

    我们在pycharm中执行py文件的时候,可能会出现以下错误 这是因为你没有制定编码格式,这时候你需要在文件最开始制定编码格式,代码如下 #!/user/bin/env python #-*- cod ...

  4. 实际开发中 dao、entity的代码怎样自动生成?一款工具送给你

    01 关注"一猿小讲"朋友,都知道以往的文章一直倡导拒绝 CRUD,那到底什么是 CRUD?今天咱们就聊聊 Java 妹子小猿与数据库老头交互的事儿. 产品小汪铿锵有力的说:小猿同 ...

  5. Idea 中使用Lombok找不到其自动生成的方法

    问题描述 在我的Idea已经安装Lombok插件还有已经导入Lombok jar包依赖的情况下,仍然找不到其自动生成的方法. 问题分析 从各方大佬那里得知,Lombok通过Pluggable Anno ...

  6. JAVA中自定义扩展Swagger的能力,自动生成参数取值含义说明,提升开发效率

    大家好,又见面了. 在JAVA做前后端分离的项目开发的时候,服务端需要提供接口文档供周边人员做接口的对接指导.越来越多的项目都在尝试使用一些基于代码自动生成接口文档的工具来替代由开发人员手动编写接口文 ...

  7. 在eclipse中new 对象后怎么通过快捷键自动生成返回对象

    如题,每次new 对象的时候不想手动补全返回对象,可以实现快捷键生成返回对象.new  对象后可以按住ctrl+1,如下图: 选择第一行即可.

  8. 【日常记录】Unity3D 中的 Surface Shader 是不支持在 Pass中使用的,因为自动生成了 Pass

    如题 搞了好久,一直报错: Shader error in 'custom_outline_effect': Parse error: syntax error, unexpected TOK_PAS ...

  9. [转]在Eclipse中使用JUnit4进行单元测试(中级篇)

    我们继续对初级篇中的例子进行分析.初级篇中我们使用Eclipse自动生成了一个测试框架,在这篇文章中,我们来仔细分析一下这个测试框架中的每一个细节,知其然更要知其所以然,才能更加熟练地应用JUnit4 ...

随机推荐

  1. HDU-1024 Max Sum Plus Plus 动态规划 滚动数组和转移优化

    题目链接:https://cn.vjudge.net/problem/HDU-1024 题意 给n, m和一个序列,找m个不重叠子串,使这几个子串内元素和的和最大. n<=1e6 例:1 3 1 ...

  2. luogu P3765 总统选举(线段树维护摩尔投票+平衡树)

    这题需要一个黑科技--摩尔投票.这是一个什么东西?一个神奇的方法求一个序列中出现次数大于长度一半的数. 简而言之就是同加异减: 比如有一个代表投票结果的序列. \[[1,2,1,1,2,1,1]\] ...

  3. [原创]Linux 下 redis 链接一次

    刚接触 Linux ,在 Linux 下安装 redis 链接redis 出现了以下问题  Could not connect to Redis at 127.0.0.1:6379: Connecti ...

  4. Object-C,数组NSArray

    晚上回来,写了2个iOS应用程序. 就是在界面中,展示标签.一种是手动构造界面,然后绑定事件.另外一种是,使用自带的界面作为容器,但是手动向里面放其它界面元素. 书中的观点是,使用图形化界面,构造界面 ...

  5. POJ 2175 Evacuation Plan

    Evacuation Plan Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on PKU. Origina ...

  6. Qt之QStackedLayout

    简述 QStackedLayout继承自QLayout. QStackedLayout类提供了多页面切换的布局,一次只能看到一个界面. QStackedLayout可用于创建类似于QTabWidget ...

  7. CI框架源代码阅读笔记2 一切的入口 index.php

    上一节(CI框架源代码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程.这里再次贴出流程图.以备參考: 作为CI框架的入口文件.源代码阅读,自然由此開始. 在源代码阅读的 ...

  8. Material Design学习之 Button(具体分析,传说中的水滴动画)

    转载请注明出处:王亟亟的大牛之路 上一篇大致介绍了Material Design的一些基本概念传送门:http://blog.csdn.net/ddwhan0123/article/details/5 ...

  9. Thinkphp 无法使用-&gt;order() 排序的两种解决的方法!

    使用ThinkPHP,却发现无法使用->order($order)来排序. $order = " info.date2 desc "; 非常遗憾的是这样写结果order却变成 ...

  10. matplotlib 可视化 —— 移动坐标轴(中心位置)

    通常软件绘图,包括 matlab.python 的 matplotlib,默认都是将坐标轴置于画布(figure)的最下侧(x 轴),最左侧(y 轴),也即将坐标原点置于左下角.而我们自己理解数学,以 ...