简单了解junit的使用
普通使用:
在没有用测试框架之前,我们要用一个main方法来跑代码,而有了像junit这样的测试框架后,就可以不用次次写个main方法了。
直接上代码,注释里有说明:
package com.stuPayment; import static org.junit.Assert.assertEquals; import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test; /**
* 简单地演示了junit的基本用法
* @author 85060
*
*/
public class MyTest {
private static NumberTest numberTest = null; public void get3(NumberTest num) {
num.a = num.a*num.a*num.a;
} public void get2(NumberTest num) {
num.a = num.a*num.a;
} @Ignore //这个注释下的方法是会被忽略暂时不会运行的
public void ignoreMethod() {
System.out.println("i am ingnored");
} @Before //这个注释是在每个测试方法之前都会跑的,也就是每个@Test的方法跑之前
public void sayBefore() {
System.out.println("hello i am the before");
} @After //这个注释是在每个测试方法之后都会跑的,也就是每个@Test的方法跑之后
public void sayAfter() {
System.out.println("hello i am the after");
} @BeforeClass //这个注释是在整个测试开始前会跑的
public static void befC() {
System.out.println("hello i am the before class");
numberTest = new NumberTest(3);
} @AfterClass //这个注释是在整个测试结束后会跑的
public static void aftC() {
System.out.println("hello i am the after class and the a is "+numberTest.a+" now"); } @Test
public void test1() {
System.out.println("i am the test1");
get2(numberTest);
assertEquals(9, numberTest.a);
} @Test
public void test2() {
System.out.println("i am the test2");
/*if(numberTest.a == 3) { } else if(numberTest.a == 9)*/
get3(numberTest);
assertEquals(729, numberTest.a); } } class NumberTest {
int a; public NumberTest(int a) {
this.a = a;
} }
运行的方法就直接run as Junit Test,运行结果:


在Springboot中使用junit:
这里只是提供一个简单的测试例子,可以用来单独测试service或者是你的dao接口。
关于@Runwiht:
@RunWith
在JUnit中有很多个Runner,他们负责调用你的测试代码,每一个Runner都有各自的特殊功能,你要根据需要选择不同的Runner来运行你的测试代码。
如果我们只是简单的做普通Java测试,不涉及Spring Web项目,你可以省略@RunWith注解,这样系统会自动使用默认Runner来运行你的代码。
也是直接上代码,注释里面有说明:
package com.stuPayment; import static org.junit.Assert.assertArrayEquals; import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import com.stuPayment.dao.LoginMapper;
import com.stuPayment.entiy.User; /**
* 演示了springboot环境下的junit测试
* @author 85060
*
*/
@RunWith(SpringRunner.class) // SpringJUnit支持,由此引入Spring-Test框架支持!
@SpringBootTest //提供spring环境
public class MyTest2 { @Autowired
private LoginMapper loginMapper; @Test
public void testVoid() {
Map<String, Object> user = new HashMap<>();
user.put("userAccount", "123");
user.put("userPassword", "123");
List<User> userList = loginMapper.getThisUser(user); assertArrayEquals(
new Object[]{
userList.isEmpty()
}, new Object[]{
false
}
);
}
}
junit的参数化测试:
其实就是,当有一个方法,要用多组参数来验证其正确性,这个时候你就可以考虑用这个@RunWith(Parameterized.class)注解
上代码,代码里面有注解解释:
package com.stuPayment; import static org.junit.Assert.assertTrue; import java.util.Arrays;
import java.util.Collection; import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters; /**
* 演示一下参数测试
* @author 85060
*
*/
@RunWith(Parameterized.class) //一定要用这个注解
public class MyTest3 {
private String name;
private boolean result; /**
* 在参数测试中只能有一个构造方法,因为参数测试是需要一个构造方法参与的
* 这个构造方法的参数和等一下@Parameters注解的方法中的Object数组中值的顺序对应
* @param name
* @param result
*/
public MyTest3(String name, boolean result) {
this.name = name;
this.result = result;
} /**
* 必须提供@Parameters方法,方法签名必须是public static Collection,不能有参数,
* 并且collection元素必须是相同长度的数组。
* 同事数组的长度必须与唯一的公共构造函数的参数数量相匹配。
*/
@Parameters
public static Collection<?> data() {
return Arrays.asList(new Object[][]{
{"jflksadjflkasdlkfj",false},
{"mikjsdkalfjlksdjfmifjaslkdjf",true},
{"mimimimisdfsadfsd",true}
});//意思其实就是拿这些数据去用MyTest3(String name, boolean result)一直new
} @Test //真正测试也就是跑的那个方法,用@parameters方法返回的那些参数每组都用MyTest3(String name, bolean result)
//然后再跑下面这个方法。
public void test() {
assertTrue(name.contains("mi") == result);//看看每个用上面那些数据new的实例是否符合要求
} }
测试结果的效果:

可以看到,如果有错的话会有蓝色的叉叉,然后点击这个错误,在failure trace那可以看到简单的错误说明。
简单了解junit的使用的更多相关文章
- 一个简单的JUnit项目
本人一直很喜欢JAVA,可是真正接触到JUnit也不过半年.由于公司进行网页测试,采用的是 JUnit+selenium的方式搭建的测试框架,然后采用JAVA语言编写,所以本人也好好研究了一下JUni ...
- 简单易懂, JUnit 框架问答
本文算是一个关于Junit4相关的知识分享,但是不同于网上大段的源码分析,模式学习文章,我想通过问答的形式,引出代码来简明阐述JUnit4是如何实现需要的功能的. 考虑到任何一个框架,都是为了解决问题 ...
- 简单使用Junit
不需要配置,导入相应jar,然后在测试的方法上面加入注解@Test 执行的时候选择junit即可.
- Eclipse JUnit简单示例
在本节中,我们将看到一个简单的JUnit例子. 先创建一个工程,名称为:CalculateTest,并在这个工程上点击右键,选择:Build Path -> Add Library -> ...
- 单元测试及框架简介 --junit、jmock、mockito、powermock的简单使用
转 单元测试及框架简介 --junit.jmock.mockito.powermock的简单使用 2013年08月28日 14:33:06 luvinahlc 阅读数:6413 标签: 测试工具单元测 ...
- 新手入门JUnit单元测试
首先将JUnit插件安装到Eclipse或myeclipse里面,编写完一个模块或者实体类的时候,直接右击,new一个JUnit项目,选择你想测试的实体类(模块),然后会自动生成一个类,这个类,我们将 ...
- 关于intellij IDEA 上junit的用法
话说,最近正在看视频学java.里面有个叫做junit的东西很有用.但是实话说我摆弄了半天都没弄明白. 今天呢通过一些资料,终于弄清楚了junit的大致用法,这里写出来,用以分享和备忘. 首先,环境和 ...
- testNg vs junit 4.X @Test
http://www.ibm.com/developerworks/cn/java/j-cq08296/ 一个简单的测试用例 初看起来,JUnit 4 和 TestNG 中实现的测试非常相似.为了更好 ...
- JUnit单元测试--小试牛刀
单元测试更多的是在开发阶段完成,开发人员每写一个函数的时候都会写相应的单元测试.对于java代码,普遍使用的是jUnit,根据jUnit可以自己相应的开发一套自动化测试框架.这个的前提是要学会juni ...
随机推荐
- CSU-1531 Jewelry Exhibition —— 二分图匹配(最小覆盖点)
题目链接:https://vjudge.net/problem/CSU-1531 Input Output Sample Input 2 1 5 3 0.2 1.5 0.3 4.8 0.4 3.5 4 ...
- Swing项目编译成exe,并且打包成安装文件(二)
前面我们讲到了将Swing项目编译成双击可执行的文件exe,这篇我就教大家怎么把exe打包成需要在电脑安装的那种,首先需要一个工具,Inno Setup 编译器, 下载地址,我这个是汉化版的,双击打开 ...
- 谈谈java中成员变量与成员方法继承的问题
谈谈java中成员变量与成员方法继承的问题 关于成员变量和成员方法的的继承问题,我也可以做一个小测试,来看看结果. 首先我们先创建一个父类:
- 「LOJ#10043」「一本通 2.2 例 1」剪花布条 (KMP
题目描述 原题来自:HDU 2087 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? 输入格式 输入数据 ...
- codevs 1214线段覆盖
1214 线段覆盖 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给定x轴上的N(0<N<100)条线段,每 ...
- 2.对《30个提高Web程序执行效率的好经验》的理解
摘自:http://www.cnblogs.com/powertoolsteam/archive/2010/07/12/1775933.html 文章中执行代码的消耗时间是怎么计算的,有知道的同学可以 ...
- SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)(转载)
使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合 ...
- C++ TUTORIAL - MEMORY ALLOCATION - 2016
http://www.bogotobogo.com/cplusplus/memoryallocation.php Variables and Memory Variables represent st ...
- android系统的源代码获取(亲测可用)
1.在线阅读各版本源代码: http://androidxref.com/ 2.下载到本地: http://blog.csdn.net/yin1031468524/article/details/55 ...
- bootstrap的tab中,echarts 图表宽度设为100%之后,会出现图表宽带变为100px的情况。只有第一个正常
1.原因 echarts官方解释是 Tip: 有时候图表会放在多个标签页里,那些初始隐藏的标签在初始化图表的时候因为获取不到容器的实际高宽,可能会绘制失败,因此在切换到该标签页时需要手动调用resiz ...