在一个测试类中,所有被@Test注解修饰的public,void方法都是testcase,可以被JUNIT执行。

@Retention(value=RUNTIME)
@Target(value=METHOD)
public @interface Test
Test中的属性(可选的):1.expected:如果被期待的指定的异常抛出,则表示成功。
       2.timeout:执行失败的时间
测试的方法名不用以test开头,但规范来写还是以test开头
1.setup方法在3.8中是在每个测试的方法前初始化,在4.0中要采用注解的方式@Before,与tearDown对应的@After

2.4.0中新加入@BeforeClass,@AfterClass.相当于全局初始化和销毁 修饰的方法必须为public static void no-arg.

以Calculator的testAdd测试timeout属性

先让add方法睡眠500ms;

以Calculator的testDivide测试expected属性

 import static org.junit.Assert.assertEquals;

 import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test; public class CalculatorTest {
private Calculator cal;
@BeforeClass
public static void globalInit(){
System.out.println("全局初始化");
} @Before
public void init(){
cal=new Calculator();
} @Test(timeout=200)
public void testAdd(){ int result=cal.add(3, 1);
assertEquals(4, result);
} @Test(expected=Exception.class)
public void testDivide() throws Exception{
cal.divide(3, 0);
}
}
@Retention(value=RUNTIME)
@Target(value={METHOD,TYPE})
public @interface Ignore 可以修饰方法也可以修饰类,表示忽略 @RunWith 运行哪个运行器
Parameterized:参数化运行器
参数化测试(Parameters)需要在类的声明处加上@RunWith(Parameterized.class),在提供参数的方法上要使用@Parameters注解修饰,同时在构造方法中为各个参数赋值(构造方法由junit调用),最后编写测试类,它会根据组数来运行测试次数。
 import static org.junit.Assert.*;

 import java.util.Arrays;
import java.util.Collection; import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class)
public class ParameterizedTest {
//设定参数 预计值, 参数1 参数2
private int expected;
private int input1;
private int input2;
private Calculator cal; @SuppressWarnings("rawtypes")
@Parameters
public static Collection prepareData(){
Object[][] object={{5,4,1},{8,2,6},{9,4,5}};
//数组转换为集合
return Arrays.asList(object);
} @Before
public void setUp(){
cal=new Calculator();
} public ParameterizedTest(int expected,int input1,int input2){
this.expected=expected;
this.input1=input1;
this.input2=input2;
} @Test
public void testAdd(){
assertEquals(this.expected, cal.add(this.input1, this.input2));
}
}
Suite(运行器)
@RunWith(Suite.class)
@Suite.SuiteClasses({要运行的类(数组)}) 自动化测试
 import org.junit.runner.RunWith;
import org.junit.runners.Suite; @RunWith(Suite.class)
@Suite.SuiteClasses({CalculatorTest.class,LargestTest.class,ParameterizedTest.class})
public class TestAll { }
												

junit4学习(Annotation)的更多相关文章

  1. Junit4学习使用和总结

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

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

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

  3. JUnit4 学习笔记

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

  4. Junit4学习笔记

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

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

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

  6. 08-spring学习-annotation配置

    利用annotation配置注入关系 为了更好的解释此类存在的意义,下面通过一段习惯性的开发进行问题的描述,例如: 现在有一个IAdminService服务层,这个服务层要调用的是IAdminDAO和 ...

  7. JUnit4学习

    参考:http://www.cnblogs.com/yangxia-test/p/3996120.html JUnit4是一个开源的java单元测试框架,我们只需要引入一个包,就可以使用它的功能 先说 ...

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

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

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

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

随机推荐

  1. android动画学习

    android动画学习   转载自:http://www.open-open.com/lib/view/open1329994048671.html 3.0以前,android支持两种动画模式,twe ...

  2. 定时组件quartz系列<二>quartz的集群原理

    1.基本信息:      Quartz是一个开源的作业调度框架,它完全由java写成,并设计用于J2Se和J2EE应用中.它提供了巨大的灵活性而不牺牲简单性.你能够用它 来为执行一个作业而创建简单的或 ...

  3. requirejs之demo (转)

    具体的理论就不讲了,可以参考 http://www.ruanyifeng.com/blog/2012/10/javascript_module.html http://www.ruanyifeng.c ...

  4. appdata文件夹有什么用途?C盘appdata可以删除吗?

    在内存紧张的时候,我们都会选择删除一些无关紧要的大文件来释放内存,有不少网友发现在系统C盘下有一个appdata文件夹,而且体积挺大的,不知道能不能删除,针对此问题,本文就为大家介绍appdata文件 ...

  5. js记录用户在网站的浏览记录和停留时间

    by weber开发者 from http://weber.pub/ 本文地址: http://weber.pub/js记录用户行为浏览记录和停留时间/163.html 问题 公司想统计一个用户从进入 ...

  6. Windows下PHP+Eclipse开发环境搭建 及错误解决(apache2.2服务无法启动 发生服务特定错误:1)

    前言 Eclipse与php/apache的关系:Eclipse只是用来写代码的,如果想要在浏览器查看运行效果就要让php/apache的运行目录指向你的代码目录.Eclipse貌似不会自己和apac ...

  7. PHP写入Txt

    function writelog($str) { $open=fopen("log.txt","a" ); fwrite($open,$str); fclos ...

  8. Microsoft Visual Studio 2010中文版编译SQLlite3.7.0版

    作为一名教师,没有具体项目的开发,却喜欢尝鲜,不经意间开始追星了. 换了Win7,安装了Microsoft Visual Studio 2010中文版,7月22日SQLite发布了3.7.0版.当然想 ...

  9. ylbtech-QQ(腾讯)-群空间-数据库设计

    ylbtech-DatabaseDesgin:ylbtech-QQ(腾讯)-群空间-数据库设计 DatabaseName:QQ-群空间 Model:群相册.群共享.群论坛.群成员.留言板.公告.6个模 ...

  10. PDF数据提取------3.解析Demo

    1.PDF中文本字符串格式中关键值信息抓取(已完成) 简介:这种解析比较传统最简单主要熟练使用Regular Expression做语义识别和验证.例如抓取下面红色圈内关键信息 string mett ...