简单了解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 ...
随机推荐
- UVA10129 Play on Words —— 欧拉回路
题目链接:https://vjudge.net/problem/UVA-10129 代码如下: // UVa10129 Play on Words // Rujia Liu // 题意:输入n个单词, ...
- spring类扫描注入-----类扫描的注解解析器
通过类扫描注入到容器中,这种方式,在实际开发中还是很常用的,可以看下自己的配置文件,就会发现,自己公司的项目,搞不好就是这么注入的. 起码,我发现我公司的项目就是这么干的. 下面来演示一下简单的例子: ...
- android实现文字渐变效果和歌词进度的效果
要用TextView使用渐变色,那我们就必须要了解LinearGradient(线性渐变)的用法. LinearGradient的参数解释 LinearGradient也称作线性渲染,LinearGr ...
- codeforces C. New Year Ratings Change 解题报告
题目链接:http://codeforces.com/problemset/problem/379/C 题目意思:有n个users,每个user都有自己想升的rating.要解决的问题是给予每个人不同 ...
- 存储过程系列五:完整的存储过程备份使用函数REPLACE()substr()
CREATE OR REPLACE PROCEDURE "YLQXSCXKESL_GGXKZ_TO_QB" ( ...
- linux应用之mysql数据库的安装及配置(centos)
CentOS下Mysql数据库的安装与配置 如果要在Linux上做j2ee开发,首先得搭建好j2ee的开发环境,包括了jdk.tomcat.eclipse的安装(这个在之前的一篇随笔中已经有详细讲 ...
- eclipse 查找controller
一.打开eclipse: 二.同时按住Ctrl + Shift + R ; 弹出框如下: 在红色输入框内输入controller 名字即可. 查找控制器里面的方法:Ctrl + O
- bzoj 1086 [SCOI2005]王室联邦——思路
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1086 于是去看了题解. 要回溯的时候再把自己加进栈里判断.这样才能保证剩下的可以通过自己连到 ...
- ASoC框架
ASoC框架分为3部分: 1. platform(用来描述芯片的DAI接口,负责数据传输): DAI:snd_soc_dai_driver, 用来表示支持哪些格式数据, 提供设置格式的函数, 启动数据 ...
- JS自动让手机调出软键盘,进行输入
$('.search').click(function(){ $('input[type=text]').focus(); //让input框自动聚焦就可以让手机自动调出软键盘 });