参考:http://www.cnblogs.com/yangxia-test/p/3996120.html

JUnit4是一个开源的java单元测试框架,我们只需要引入一个包,就可以使用它的功能

先说说他的常见注解

@Before(每个测试方法执行之前都要执行一次,比如有些数据需要重新赋值

@After(每个测试方法执行后都执行一次,比如有些数据需要重新复制

@BeforeClass(所有方法执行前执行

@AfterClass(所有方法执行后执行

@Test(timeout = xxx)看当前测试方法是否在一定时间内完成(比如看是否死循环

@Test(expected=Exception.class)测试方法中是否有抛出了这个异常

@Ignore(历史原因或者没有设置好,就先不测试这个方法,加载@Test上面,不代替@Test

下面说说使用方法

准备一个测试用的类(里面有错误的方法

package andycpp;

public class Calculator {
private static int result; // 静态变量,用于存储运行结果 public void add(int n) {
result = result + n;
} public void substract(int n) {
result = result - 1; // Bug:正确的应该是result=result-n;
} public void multiply(int n) {
// 此方法尚未写好
} public void divide(int n) {
result = result / n;
} public void square(int n) {
result = n * n;
} public void squareRoot(int n) {
for (;;)
; // Bug:死循环
} public void clear() {
result = 0; // 将结果清零
} public int getResult() {
return result;
}
}

导入JUnit4包

右键项目——》构建路径——》add Library——》JUnit

在相对应的java文件右键,new——》JUnit Test Case,编写各个方法

    private static Calculator calculator = new Calculator();

    @Before
public void setUp() throws Exception {
calculator.clear();
} @After
public void tearDown() throws Exception {
} @Test(timeout = 1000)
public void testAdd() {
calculator.add(2);
calculator.add(3);
} @Test
public void testSubstract() {
calculator.add(10);
calculator.substract(2);
assertEquals(8, calculator.getResult());
} @Ignore("Multiply() Not yet implemented")
@Test
public void testMultiply() {
} @Test(expected = ArithmeticException.class)
public void testDivide() {
calculator.add(8);
calculator.divide(0);
assertEquals(4, calculator.getResult());
} @Test(timeout = 1000)
public void testSquareRoot() {
calculator.squareRoot(1);
}

右键测试类,run as --》JUnit可以看到效果

下面说带有多个参数一起解决

0,类前面加注解@RunWith(Parameterized.class)

1,设置参数

2,@Parameters方法

3,重写构造方法

4,@Test方法

    private static Calculator calculator = new Calculator();

    private int param;
private int result; @Before
public void setUp() throws Exception {
} @After
public void tearDown() throws Exception {
} @Parameters
public static Collection data() {
return Arrays.asList(new Object[][] { { 2, 4 }, { 0, 0 }, { -3, 9 } });
} public SquareTest(int param, int result) {
this.param = param;
this.result = result;
} @Test
public void testSquare() {
calculator.square(param);
assertEquals(result, calculator.getResult());
System.out.println("result=" + result);
}

效果图

我们打包想一起测试的时候,写个类包他们两个整合起来

代码内容

@RunWith(Suite.class)
@Suite.SuiteClasses({ CalculatorTest.class, SquareTest.class })
public class All {
}

JUnit4学习的更多相关文章

  1. Junit4学习使用和总结

    Junit4学习使用和总结 部分资料来源于网络 编辑于:20190710 一.Junit注解理解 1.@RunWith 首先要分清几个概念:测试方法.测试类.测试集.测试运行器.其中测试方法就是用@T ...

  2. Junit4学习(一)新建Junit4工程

    一,学习Junit4,学以致用 二,熟悉编写流程 工具:Eclipse,Junit包,hamcrest.core包 1,打开Eclipse开发工具,新建工程:file->Java Project ...

  3. Junit4学习笔记

    一.初始化标注 在老Junit4提供了setUp()和tearDown(),在每个测试函数调用之前/后都会调用. @Before: Method annotated with @Before exec ...

  4. Junit4学习(六)Junit4参数化设置

    一,背景, 有时候会对相同的代码结构做同样的操作,不同的时对参数的设置数据和预期结果:有没有好的办法提取出来相同的代码,提高代码的可重用度,junit4中使用参数化设置,来处理此种场景: 二,代码展示 ...

  5. JUnit4 学习笔记

    一.环境搭建: 1.需要用的包: JUnit4.7:http://files.cnblogs.com/files/ShawnYang/junit4.7.zip hamcrest-1.2:http:// ...

  6. junit4学习(Annotation)

    在一个测试类中,所有被@Test注解修饰的public,void方法都是testcase,可以被JUNIT执行. @Retention(value=RUNTIME) @Target(value=MET ...

  7. Junit4学习笔记--方法的执行顺序

    package com.lt.Demo.TestDemo; import java.util.Arrays; import java.util.Collection; import org.junit ...

  8. Junit4学习(五)Junit4测试套件

    一,背景 1,随着开发规模的深入和扩大,项目或越来越大,相应的我们的测试类也会越来越多:那么就带来一个问题,假如测试类很多,就需要多次运行,造成测试的成本增加:此时就可以使用junit批量运行测试类的 ...

  9. Junit4学习(四)Junit4常用注解

    一,背景知识: 由前面的知识可以知道: /*     * @Test:将一个普通方法修饰为一个测试方法     *   @Test(exception=XXX.class)     *   @Test ...

随机推荐

  1. 互联网开放平台API安全设计

    互联网开放平台设计1.需求:现在A公司与B公司进行合作,B公司需要调用A公司开放的外网接口获取数据,如何保证外网开放接口的安全性.2.常用解决办法:2.1 使用加签名方式,防止篡改数据2.2 使用Ht ...

  2. tomcat常用配置详解和优化方法

    tomcat常用配置详解和优化方法 参考: http://blog.csdn.net/zj52hm/article/details/51980194 http://blog.csdn.net/wuli ...

  3. 【Spark SQL 源码分析系列文章】

    从决定写Spark SQL源码分析的文章,到现在一个月的时间里,陆陆续续差不多快完成了,这里也做一个整合和索引,方便大家阅读,这里给出阅读顺序 :) 第一篇 Spark SQL源码分析之核心流程 第二 ...

  4. android studio 慢的问题

    转自:http://www.jianshu.com/p/e1c0b46e317c 在使用Android studio的时候常常遇到这样的问题,从github或是其他地方导入项目,Android stu ...

  5. angularjs1 自定义轮播图(汉字导航)

    本来想用swiper插件的,可是需求居然说要汉字当导航栏这就没办法了,只能自己写. directive // 自定义指令: Home页面的轮播图 app.directive('swiperImg', ...

  6. 调用http接口的工具类

    网上面有很多,但是我们项目怎么也调不到结果,试了差不多很多案例,都是报connection reset 后来,我发现是有一个验证,需要跳过验证.然后才能调接口.所以找了一个忽略https的方法.进行改 ...

  7. C++(二十三) — 内存泄漏及指针悬挂

    1.内存泄漏 动态申请的内存空间没有正常释放,但也不能继续使用. ; pch1 = new char('A'); // 此处申请的空间未被释放. char *pch2 = new char; pch1 ...

  8. Django进阶Model篇001 - mysql 数据库的配置

    django 默认支持sqlite.mysql.oracle.postgresql数据库,像db2和sqlserver之类的数据库需要第三方的支持,具体详见: https://docs.djangop ...

  9. pipenv安装库使用国内镜像

    pipenv install django超级慢,卡住不动,最后不得不CTRL+C中止 这时有必要改成国内源了,打开Pipfile文件,发现内容是: [[source]] verify_ssl = t ...

  10. linux中的kill命令

    一. 定义 kill命令用来删除执行中的程序或工作.kill可将指定的信息送至程序.预设的信息为SIGTERM(15),可将指定程序终止.若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除 ...