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学习笔记”可能是博主GreatJone在深入学习JUnit过程中所做的记录和总结,包括了JUnit的基本概念、核心组件、使用方法以及一些高级特性。 首先,JUnit的核心理念是基于断言的测试,即编写特定的测试...
第3章:描述了一个复杂的TestCase,以使向你展示Junit较大的组件如何工作。这个案例中分析的是很多 应用中都有的组件:Controller.我们介绍了案例中的代码,标出哪些代码是要测试的,然后展示如何测试它。 我们...
3. **配置测试运行器**:在`AndroidManifest.xml`文件中,替换默认的测试运行器为`android-junit-report`提供的`TestRunner`。例如: ```xml android:name="com.android.junit.report.Runner" android:target...
通过这份Junit学习笔记,你可以掌握单元测试的基本思想,熟练运用JUnit进行代码质量的保障。在实际开发中,单元测试不仅能帮助找出错误,还能在重构时提供安全保障,提高代码质量。不断学习和实践,你会发现自己在...
2.使用 Junit 提供的一个注解把原有的 main 方法替换了,替换成 Spring 提供的 3.告知 Spring 的运行器, Spring 和 ioc
这个“Junit学习.rar”压缩包显然包含了关于JUnit从3.8到4.9版本的学习资料,包括可能的操作手册、教程文档以及个人的学习笔记。以下是基于这些资源可能涵盖的一些关键知识点: 1. **JUnit基础知识**:了解JUnit的...
【标题】"hibernate学习笔记-01helloworld"主要涵盖了Hibernate框架的基础入门知识,是初学者了解和掌握Hibernate的重要起点。Hibernate是一款强大的Java对象关系映射(ORM)框架,它简化了数据库操作,使得开发者...
【标题】"SPBT 源码学习笔记 - spbt-0707-test-java-web" 指的是一份关于SPBT(可能是某个特定软件或框架的缩写)源码的学习资料,专注于测试和Java Web开发部分。这份笔记可能详细解析了SPBT在Java Web环境中的工作...
本篇笔记将带你进入JUnit与NetBeans的结合使用世界,让你在NetBeans中更高效地进行单元测试。 首先,我们需要安装JUnit库到NetBeans。在NetBeans中,打开“工具”菜单,选择“库”,然后点击“新建库”。在弹出的...
《Junit 4.0 学习笔记》 JUnit 是一个广泛使用的Java编程语言的单元测试框架,尤其在敏捷开发和持续集成环境中扮演着至关重要的角色。本文将深入探讨JUnit 4.0版本的主要特性、核心概念以及如何有效利用它进行单元...
现在的版本都4.3.1,3.8.1的感觉好象不好找,虽然www.junit.org能够找到,但对我们这种英语不好的来说,还是不好找,再说了,现在好多的教程都是以3.8.1来写的,所以在这里把我找到的3.8.1传上来供大家以后下载 博文链接:...
"Junit良葛格学习笔记"很可能包含了一系列关于如何有效利用JUnit进行测试的教程和示例。下面将详细阐述JUnit的核心概念、功能以及在实际开发中的应用。 1. **JUnit简介**: JUnit是由Ernst Leiss和Kent Beck开发的...
法在每个测试方法执行之后都要执行一次,相当于 JUnit3 中的 tearDown 方法,用于清理测试环境。@Test:这是 JUnit4 中的核心元数据,用于标记测试方法。当 JUnit4 运行测试时,会查找所有带有 @Test 注解的方法,并...
【Java GUI】(图形用户界面,Graphical User Interface)是Java编程中不可或缺的一部分,...对于初学者来说,"狂神说Java学习笔记"将是一个宝贵的资源,其中包含的源代码和图片能够直观地展示如何将理论转化为实际应用。
{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} {...
### JUnit4学习笔记——入门篇 #### 一、配置MyEclipse在项目中引入JUnit4.jar包 在使用JUnit4进行单元测试之前,首先需要确保开发环境已正确配置JUnit库。对于使用MyEclipse IDE的开发者来说,可以通过以下步骤...
"免费Eclipse插件开发学习笔记-源代码1至24章.zip" 是一个压缩包,包含了从基础到进阶的Eclipse插件开发学习资料。 这个压缩包很可能是某个教程或书籍的配套资源,提供了24个章节的源代码示例,帮助读者逐步理解并...
在“北京圣思园 junit 全套笔记及源码”中,你将深入学习 JUnit 的各种功能和最佳实践。以下是一些关键知识点: 1. **安装与配置**:首先,你需要了解如何在你的开发环境中安装 JUnit,通常是通过 Maven 或 Gradle ...