`

JUnit 4新特性笔记

    博客分类:
  • Test
阅读更多
测试任何可能的错误。单元测试不是用来证明您是对的,而是为了证明您没有错。

Before/AfterClass:使用 public static void 修饰,而且不能带有任何参数, 类级别的 Fixture 仅会在测试类中所有测试方法执行之前执行初始化,并在全部测试方法测试完毕之后执行注销方法

注解 org.junit.Test 中的两个非常有用的参数:expected 和 timeout。旧式的异常测试是在抛出异常的代码中放入 try 块,然后在 try 块的末尾加入一个 fail() 语句。参数 expected 代表测试方法期望抛出指定的异常,如果运行测试并没有抛出这个异常,则 JUnit 会认为这个测试没有通过。这为验证被测试方法在错误的情况下是否会抛出预定的异常提供了便利。比如:@Test(expected=UnsupportedDBVersionException.class). timeout,指定被测试方法被允许运行的最长时间应该是多少,如果测试方法运行时间超过了指定的毫秒数,则JUnit认为测试失败。这个参数对于性能测试有一定的帮助。
org.junit.Ignore 用于暂时忽略某个测试方法,因为有时候由于测试环境受限,并不能保证每一个测试方法都能正确运行。

测试套件:
创建一个空类作为测试套件的入口。
使用注解 org.junit.runner.RunWith 和 org.junit.runners.Suite.SuiteClasses 修饰这个空类。
将 org.junit.runners.Suite 作为参数传入注解 RunWith,以提示 JUnit 为此类使用套件运行器执行。
将需要放入此测试套件的测试类组成数组作为注解 SuiteClasses 的参数。
保证这个空类使用 public 修饰,而且存在公开的不带有任何参数的构造函数。
@RunWith(Suite.class)
@Suite.SuiteClasses( { ATest.class, BTest.class})
public class AllTests {
}


参数化测试:
为准备使用参数化测试的测试类指定特殊的运行器 org.junit.runners.Parameterized。
为测试类声明几个变量,分别用于存放期望值和测试所用数据。
为测试类声明一个使用注解 org.junit.runners.Parameterized.Parameters 修饰的,返回值为 java.util.Collection 的公共静态方法,并在此方法中初始化所有需要测试的参数对。
为测试类声明一个带有参数的公共构造函数,并在其中为第二个环节中声明的几个变量赋值。
编写测试方法,使用定义的变量作为参数进行测试。
例子:
@RunWith(Parameterized.class)
public class TestWordDealUtilWithParam {

		private String expected;
	
		private String target;
	
		@Parameters
		public static Collection words(){
	    		return Arrays.asList(new Object[][]{
	          	{"employee_info", "employeeInfo"},		//测试一般的处理情况
	          	{null, null},							//测试 null 时的处理情况
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error:  The previous line is longer than the max of 90 characters ---------|
	          	{"", ""},								//测试空字符串时的处理情况
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error:  The previous line is longer than the max of 90 characters ---------|
	          	{"employee_info", "EmployeeInfo"},		//测试当首字母大写时的情况
	          	{"employee_info_a", "employeeInfoA"},	//测试当尾字母为大写时的情况
	          	{"employee_a_info", "employeeAInfo"}	//测试多个相连字母大写时的情况
	    		});
		}
	
	 	/**
	 	* 参数化测试必须的构造函数
	 	* @param expected	期望的测试结果,对应参数集中的第一个参数
	 	* @param target	测试数据,对应参数集中的第二个参数
	 	*/
		public TestWordDealUtilWithParam(String expected , String target){
			this.expected = expected;
			this.target = target;
		}
	
	 	/**
	 	* 测试将 Java 对象名称到数据库名称的转换
	 	*/
		@Test public void wordFormat4DB(){
			assertEquals(expected, WordDealUtil.wordFormat4DB(target));
		}
}

分享到:
评论

相关推荐

    Junit学习笔记

    2. 创建测试类和方法:创建一个新的Java类,添加`@RunWith(JUnit4.class)`注解,然后在类中编写测试方法,每个方法都添加`@Test`注解。 3. 运行测试:在IDE中选择测试类或单个测试方法右键运行,查看测试结果,绿色...

    Junit良葛格学习笔记

    - **回归测试**:每当代码修改后,运行JUnit测试确保改动没有引入新的错误。 - **重构保障**:在重构过程中,JUnit测试可以作为安全网,确保功能不变。 通过"Junit良葛格学习笔记",你可能会了解到这些概念的详细...

    JUnit学习笔记

    这篇博客“JUnit学习笔记”可能是博主GreatJone在深入学习JUnit过程中所做的记录和总结,包括了JUnit的基本概念、核心组件、使用方法以及一些高级特性。 首先,JUnit的核心理念是基于断言的测试,即编写特定的测试...

    junit4测试源码

    关于"浪曦JUNIT4笔记"可能涉及的内容,浪曦可能对JUnit4的使用提供了详细的教程或者最佳实践,包括但不限于如何组织测试类,如何使用Mockito进行模拟对象测试,以及如何利用TestNG或Spock等其他测试框架与JUnit4结合...

    JUnit3.X和4.X学习记录及用例

    总之,这个学习资源将带你深入理解JUnit的基本概念和高级特性,通过阅读`JUnit学习笔记.txt`并动手实践其中的示例,你将能熟练掌握如何利用JUnit3和JUnit4进行有效的单元测试,从而提升代码质量和项目稳定性。

    Junit 4.0 学习笔记

    《Junit 4.0 学习笔记》 JUnit 是一个广泛使用的Java编程语言的单元测试框架,尤其在敏捷开发和持续集成环境中扮演着至关重要的角色。本文将深入探讨JUnit 4.0版本的主要特性、核心概念以及如何有效利用它进行单元...

    Junit学习.rar

    2. **JUnit注解(Annotations)**:从JUnit 3.8过渡到4.x,注解成为了一个重要的特性。@Test用于标记测试方法,@Before和@After用于定义在每个测试方法之前和之后执行的代码,@BeforeClass和@AfterClass则分别用于在...

    Junit复习笔记

    四、JUnit5新特性 1. **Jupiter引擎**:JUnit5引入了新的测试引擎,提供更现代、更灵活的API。 2. **Lambda表达式**:JUnit5支持使用lambda表达式简化测试逻辑,如`Assertions.assertThat(() -> ...).isTrue()`。 3....

    java5.0新特性总结--Annotation系统学习整理笔记

    这篇博客是关于Java 5.0新特性——Annotation的系统学习与整理笔记,通过讲解与实例,深入探讨了注解在Junit、Spring和Hibernate中的应用。 首先,注解是一种声明式的编程元素,它可以附加到类、接口、方法、变量等...

    Selenium+Eclipse+Junit+TestNG自动化学习笔记

    ### Selenium+Eclipse+JUnit+TestNG自动化测试学习笔记 #### 一、环境搭建与配置 **1. 安装 JDK** - **版本**: JDK 1.7 - **下载地址**: ...

    方立勋笔记

    增强for循环,也称为foreach循环,是Java5引入的新特性,简化了遍历集合和数组的操作。笔记将详细解释增强for循环的工作原理,如何使用它遍历各种数据结构,并与传统的for循环进行比较,使读者能够根据场景选择合适...

    java全套培训笔记

    除此之外,笔记可能还涉及了Java的最新版本特性,如Java 8的Lambda表达式、函数式接口、Stream API,以及Java 9至14的新特性,如模块化系统、私有接口方法、文本块等。 在实际开发中,测试和调试也是必不可少的部分...

    Java学习笔记(源码)

    14. **Java 8及更高版本的新特性**:例如lambda表达式、Stream API、Optional类等,这些新特性使Java编程更加简洁和高效。 通过深入学习并实践这些知识点,开发者可以熟练掌握Java编程,为构建高质量的Java应用程序...

    懒人笔记 一个 iOS 开源笔记 App.zip

    通过研究该项目的源代码,你可以学习到Swift的基本语法,包括变量声明、函数定义、控制流结构、面向对象编程以及Swift特有的特性,如枚举、协议和扩展。 二、UIKit框架 UIKit是iOS应用程序界面的核心框架,用于构建...

    java云笔记代码与文档

    在这个项目中,开发者利用Java的特性与强大的开源库,构建了一个支持多用户、多设备同步的云笔记系统。 首先,我们可以从描述中了解到,该项目包括了需求文档和每日的代码更新,这表明它是一个持续进行的开发过程,...

    宋红康java笔记.rar

    4. **集合框架**:Java集合框架包括List、Set、Map等接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等。学习如何在不同场景下选择合适的集合类型,并理解它们的特性及操作方法。 5. **IO流**:Java的...

    安卓笔记——安卓详细笔记汇总

    4. **Linux内核**:为安卓提供硬件驱动支持和安全特性,如内存管理、进程调度等。 接下来,我们可能会在笔记中看到关于以下几个关键主题的详细讲解: - **环境搭建**:如何安装和配置Android Studio,设置SDK,...

    java学习笔记4

    以上内容是基于“java学习笔记4”的标题和描述所推测的可能知识点,具体的学习内容需参考“video4”这个压缩包文件中的详细资料。对于初学者和有经验的开发者来说,这些知识点都是非常有价值的。

Global site tag (gtag.js) - Google Analytics