简单了解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 ...
随机推荐
- jQuery ajax序列化函数
参数序列化$.param() 举例: <!DOCTYPE html> <html> <head> <script src="https://ajax ...
- [APIO 2014] 序列分割
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3675 [算法] 首先 , 我们发现将一段序列切成若干段所获得的收益与顺序无关 于是我 ...
- codevs 1214线段覆盖
1214 线段覆盖 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给定x轴上的N(0<N<100)条线段,每 ...
- Java并发实现线程阻塞原语LockSupport
LockSupport 和 CAS 是Java并发包中很多并发工具控制机制的基础,它们底层其实都是依赖Unsafe实现.LockSupport是用来创建锁和其他同步类的基本线程阻塞原语. 1.Lock ...
- DLL的远程注入技术
DLL的远程注入技术是目前Win32病毒广泛使用的一种技术.使用这种技术的病毒体通常位于一个DLL中,在系统启动的时候,一个EXE程序会将这个DLL加载至某些系统进程(如Explorer.exe)中运 ...
- webpack 小demo
1 安装node.js 2 安装cnpm 3 安装webpack cnpm install --save-dev webpack 对于大多数项目,我们建议本地安装.这可以使我们在引入破坏式变更的依赖时 ...
- Jquery获取web窗体关闭事件,排除刷新页面
在js脚本里全局定义一个 var r=true;若是刷新的话则把r=false; $(window).unload(function () { if (r) { //这里面证明用户不是点的F5刷新 执 ...
- 前端学习之——js解析json数组
** 前端学习之——js解析json数组** 解析json数组即对JSONArray的遍历 一.对于标准的json数组如: var result=[{"flag":1," ...
- 3.17-3.18 HDFS2.x中高级特性讲解
一.hdfs federation hdfs federation即hdfs的联邦:可以理解为有多个namenode节点的hdfs集群: HA方案解决的是单点故障问题,而Fdederation解决的是 ...
- UVa 12105 Bigger is Better (DP)
题意:用不超过 n 根火柴,组成一个尽可能大的数. 析:很明显的一个DP题,首先不难想到这个dp[i][j] 表示前 i 根火柴,所能拼出的取模 m 为 j 的数,状态转移方程也很好写, dp[i][ ...