普通使用:

在没有用测试框架之前,我们要用一个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的使用的更多相关文章

  1. 一个简单的JUnit项目

    本人一直很喜欢JAVA,可是真正接触到JUnit也不过半年.由于公司进行网页测试,采用的是 JUnit+selenium的方式搭建的测试框架,然后采用JAVA语言编写,所以本人也好好研究了一下JUni ...

  2. 简单易懂, JUnit 框架问答

    本文算是一个关于Junit4相关的知识分享,但是不同于网上大段的源码分析,模式学习文章,我想通过问答的形式,引出代码来简明阐述JUnit4是如何实现需要的功能的. 考虑到任何一个框架,都是为了解决问题 ...

  3. 简单使用Junit

    不需要配置,导入相应jar,然后在测试的方法上面加入注解@Test 执行的时候选择junit即可.

  4. Eclipse JUnit简单示例

    在本节中,我们将看到一个简单的JUnit例子. 先创建一个工程,名称为:CalculateTest,并在这个工程上点击右键,选择:Build Path -> Add Library -> ...

  5. 单元测试及框架简介 --junit、jmock、mockito、powermock的简单使用

    转 单元测试及框架简介 --junit.jmock.mockito.powermock的简单使用 2013年08月28日 14:33:06 luvinahlc 阅读数:6413 标签: 测试工具单元测 ...

  6. 新手入门JUnit单元测试

    首先将JUnit插件安装到Eclipse或myeclipse里面,编写完一个模块或者实体类的时候,直接右击,new一个JUnit项目,选择你想测试的实体类(模块),然后会自动生成一个类,这个类,我们将 ...

  7. 关于intellij IDEA 上junit的用法

    话说,最近正在看视频学java.里面有个叫做junit的东西很有用.但是实话说我摆弄了半天都没弄明白. 今天呢通过一些资料,终于弄清楚了junit的大致用法,这里写出来,用以分享和备忘. 首先,环境和 ...

  8. testNg vs junit 4.X @Test

    http://www.ibm.com/developerworks/cn/java/j-cq08296/ 一个简单的测试用例 初看起来,JUnit 4 和 TestNG 中实现的测试非常相似.为了更好 ...

  9. JUnit单元测试--小试牛刀

    单元测试更多的是在开发阶段完成,开发人员每写一个函数的时候都会写相应的单元测试.对于java代码,普遍使用的是jUnit,根据jUnit可以自己相应的开发一套自动化测试框架.这个的前提是要学会juni ...

随机推荐

  1. Js中获取显示器、浏览器以及窗口等的宽度与高度的方法

    网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWid ...

  2. c语言之秒数算法

    // 水仙花树:是指一个3位数字,立方和 等于该数本身 // 秒数算法:随便输入一个大于0的数,求出对应的多少小时多少分钟多少秒 #include <stdio.h> / int main ...

  3. 页面渲染——简化paint复杂程度和区域

    Paint是填充像素并且最后合成在用户的屏幕上的过程. 通常是在管道中耗费最大的,你要尽可能的避免使用paint. 动画中使用除了transform和opacity的动画属性都将触发paint pai ...

  4. 「USACO16OPEN」「LuoguP3146」248(区间dp

    题目描述 Bessie likes downloading games to play on her cell phone, even though she doesfind the small to ...

  5. npm 引入第三方过滤器

    根据项目具体情况使用过滤器,如果不满足业务需求可以在vue的全局或者局部自定义fiter(过滤器) 一下是github提供的第三方过滤器: https://github.com/freearhey/v ...

  6. SQL集锦之IndexOf、LastIndexOf 【转】

    DECLARE @Name NVARCHAR (50)SET @Name = '12345.67890ABCDE.FGHIJKLMNOPQRSTUVWXYZTest' DECLARE @Positio ...

  7. staruml详解

    一.用例图   1.说明        1.1  用例图说明的事谁要使用系统以及他们使用该系统可以做些什么?  <业务需求>        1.2  解析一个用例图,我们可以发现它包含4个 ...

  8. 文本编辑器[notepad++] :一些快捷键

    资源来自网络收集. Ctrl+C 复制 Ctrl+X 剪切 Ctrl+V 粘贴 Ctrl+Z 撤消 Ctrl+Y 恢复 Ctrl+A 全选 Ctrl+F 键查找对话框启动 Ctrl+H 查找/替换对话 ...

  9. CodeForces 1111E. Tree

    题目简述:给定$n \leq 10^5$个节点的无根树,以及$q \leq 10^5$个询问.每个询问给定$k \leq 10^5$个不同的节点$a_1, a_2, \dots, a_k$,以及参数$ ...

  10. PHP实用小程序(二)

    <HTML> <HEAD> <TITLE>经典循环例子</TITLE> </HEAD> <BODY> <? ; $coun ...