1.学习了JUnit4.x中的@Test,@BeforeClass,@AfterClass,@Before,@After,@Ignore标签的意义,并且使用它们。并且学习了带expteced和timeout参数的@Test标签。
2.学习了JUnit中Failure和Error的区别。及其它们是怎样出现的。
3.温故了Java中Excepion和Error的知识,只有Excpetion和Error两个类实现了Throwable接口。发现Error能手动抛出和捕捉,虽然这样写是无任何意义的。
例:
public class TestError{
public void throwError(){
throw new Error("抛出的错误");
}
public static void main(String[] args){
TestError te = new TestError();
try{
te.throwError();
}catch(Error e){
System.out.println("catch到了一个错误");
e.printStackTrace();
}
}
}
4.下面是学习期间写的代码笔记:
MathDemo类:提供加和除的方法
package com.yuchujin.junit;
public class MathDemo {
public int add(int a,int b){
return a+b;
}
public int div(int a,int b){
if(0 == b){
throw new ArithmeticException("除数不能为0");
}
return a/b;
}
public Object getObject() {
Object[] os = new Object[2];
//1
// return null;
//2
return os[3];
}
public void throwError(){
throw new Error("抛出的错误");
}
}
MathDemoTest类:MathDemo的测试类
package com.yuchujin.junit;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
/**
* MathDemo测试类
* @author Ayuchujin
*
*/
public class MathDemoTest {
MathDemo demo = null;
//@BeforeClass注释:在类加载时初始化
@BeforeClass
public static void setUpBeforeClass(){
System.out.println("setUpBeforeClass");
}
//@AfterClass注释:在类"销毁"时执行
@AfterClass
public static void treaDownAfterClass(){
System.out.println("treaDownAfterClass");
}
//@Before注释:在对象生成时初始化
@Before
public void setUp(){
System.out.println("setUp");
demo = new MathDemo();
}
//@After注释:代表在对象"销毁"时执行
@After
public void tearDown(){
System.out.println("tearDown");
demo = null;
}
//@Test注释:代表要测试的测试方法
@Test
public void testAdd() {
int expected = 2;
int actual = demo.add(1, 1);
assertEquals(expected, actual);
}
@Test
public void testDiv() {
int expected = 2;
int actual = demo.div(2, 1);
//String作为第一个参数:在出错后显示第一个String消息信息
assertEquals("除出错了",expected, actual);//没有继承任何类仍然可以使用类方法。原因是因为使用了JAVA5的新特性,静态导入。
}
//expected带异常参数:如果方法体内抛出跟expected同样的异常则测试通过,否则测试不通过。
@Test(expected = ArithmeticException.class)
public void testDiv2(){
int expected = 2;
int actual = demo.div(1, 0);
assertEquals(expected, actual);
//JUnit4.x中提出了异常参数,在3.8中只能用try-catch来实现。这样使用JAVA注释的方式比3.8中跟简便
//下面是3.8版本如何测试抛出异常
// int expected = 2;
// try{
// int actual = demo.div(1, 0);
// assertEquals(expected, actual);
// }catch(Exception e){
// Assert.assertNotNull(e);
// }
}
//timeout带超时时间参数:如果执行方法花费时超过timeout则执行不通过,否则通过。
@Test(timeout=5)
public void testAdd2(){
try {
Thread.sleep(10);//线程在sleep到第5毫秒时被中断,JUnit测试不通过。
} catch (InterruptedException e) {
e.printStackTrace();
}
int expected = 2;
int actual = demo.add(1, 1);
assertEquals(expected, actual);
}
//两个参数可以连用
@Test(expected=ArithmeticException.class,timeout=100)
public void testDiv3(){
int expected = 2;
int actual = demo.div(1, 0);
assertEquals(expected, actual);
}
//@Ignore注释:代表先定义一个测试方法,但未写测试内容,留给以后写。这样使用了@Ignore以后将不会被执行
//在TDD中,是先写测试方法再在写业务类中具体的方法。这样Ignore标签就相当有用
@Test
@Ignore
public void testNoNameMethod(){
System.out.println("该测试方法不执行");
// TODO 未完成测试方法
}
//JUnit中Error和Failure的区别
@Test
public void testGetObject(){
//执行demo.getObject()中的1则会出现Failure
//执行demo.getObject()中的2则会出现Error
Object o = demo.getObject();
//Failure代表:在执行断言时得到的实际结果和预期的不一样。
//Error代表:在执行断言前出现了预想不到的情况。Error执行不到断言部分。下面一句执行不了,107行就直接抛出了下标越界异常。
assertNotNull(o);
}
}
分享到:
相关推荐
Junit学习笔记,希望有用~~~~~~~~~~~~~~~~~~~~~~
JUnit是一款由Erich Gamma(《设计模式》的作者)和Kent Beck(极限编程的提出者)编写的开源的回归测试...与早期的JUnit 3相比,JUnit 4.1依赖于Java 5.0的新特性,因此无法兼容于jdk 1.4,可以说是一个全新的框架。
第3章:描述了一个复杂的TestCase,以使向你展示Junit较大的组件如何工作。这个案例中分析的是很多 应用中都有的组件:Controller.我们介绍了案例中的代码,标出哪些代码是要测试的,然后展示如何测试它。 我们...
Junit学习笔记和课件,欢迎学习爱好者下载资源,共同学习。。
雾山的Robotium学习笔记---使用junitreport导出测试报告http://blog.csdn.net/tt75281920/article/details/29852517
NULL 博文链接:https://greatjone.iteye.com/blog/1161009
JUnit学习笔记之NetBeans入门篇,一句话好东西
2.使用 Junit 提供的一个注解把原有的 main 方法替换了,替换成 Spring 提供的 3.告知 Spring 的运行器, Spring 和 ioc
中间有各种Junit文档,Junit各种操作手册!3.8--4.9。还有本人学习的笔记。绝对值得下载。
现在的版本都4.3.1,3.8.1的感觉好象不好找,虽然www.junit.org能够找到,但对我们这种英语不好的来说,还是不好找,再说了,现在好多的教程都是以3.8.1来写的,所以在这里把我找到的3.8.1传上来供大家以后下载 博文链接:...
{12.21.3}foreign key}{182}{subsection.12.21.3} {12.22}view}{187}{section.12.22} {12.23}index, rowid}{187}{section.12.23} {12.24}sequence}{189}{section.12.24} {12.25}PL/SQL}{189}{section.12.25} {...
Junit良葛格学习笔记,喜欢的下啊!!!
JUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写。 先简单解释一下什么是Annotation,这个单词一般是翻译成元数据。元数据是什么?元数据就是描述数据的数据。也...
JUnit学习笔记及练习用例,主要分为JUnit3.8.2和JUnit4.8.1两个版本。
以一个简单的DEMO介绍如何在Eclipse下使用JUnit4。供初次接触JUnit的同学学习
NULL 博文链接:https://thisliy.iteye.com/blog/786293
Selenium+Eclipse+Junit+TestNG自动化学习笔记
林信良学习笔记(内容):ajax学习笔记,算法学习笔记,计算机图形学,C++学习笔记,设计模式,Hibernate学习笔记,Java学习笔记,JSF,JSP/Servlet,JUnit,Spring,Struts等