`
deepnighttwo
  • 浏览: 52184 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JUnit4 Tutorial

阅读更多

 


JUnit4 比之前的版本可爱多了。

编写Testcase

使用JUnit4 编写testcase 不再有继承Testcase 类的负担了。只要在测试方法加annotation @org.junit.Test 就行了。

@org.junit.Test
public void test1(){
   
// ur test code here
}

一个类可以有多个这种加了@Test annotation 标注的测试方法。它们会在跑testcase 的时候无序无依赖的跑。

如果一个类中的Test 方法需要做一些初始化和清理工作,就需要用到@BeforeClass, @AfterClass, @Before @After 这几个标注了。

@BeforeClass
public void overallInitial(){
   
// This method will run ONCE and ONLY ONCE before all test methods in this class. Some initial works should be done here for all test methods in this class.
}

@Before
public void initalTestCase(){
   
// This method run every time before for a test method. Test method level initial work should be done here.
}


@After
public void clearupTestCase(){
   
// This method run every time after for a test method. Test method level clearup work should be done here.
}

@AfterClass
public void overallClearup(){
   
// This method will run ONCE and ONLY ONCE after all test methods in this class. Some clearup works should be done here for all test methods in this class.
}

编写testcase 基本就这么简单。一切都用标注搞定就行了。

还有一些有用的标注:

忽略某个testcase
@Ignore("This case is not supported yet")

1s
内如果不能跑完就算失败
@Test(timeout=1000)

如果抛出IOException 则算测试成功
@Test(expected=IOException.class)

组织和运行Testcase

编写完Testcase ,一般需要将Testcase 组织成Testsuite ,这样可以一次跑多个Testcase 类。JUnit4 中组织Testcase 的方式有多种。

通过Annotation

最简单的还是通过annotation 。下面的类就是通过Annotation 来将多个Testcase 组织成一个Suite

package junit.testsuite;

import junit.testcase.JUnitTestCase;
import junit.testcase.TestCase2;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.
class )
@Suite.SuiteClasses({ JUnitTestCase.
class , TestCase2. class })
public class AllTestsUsingAnnotation {

}

上面的类不需要代码,就俩标注就行了。一个@org.junit.runner.RunWith ,一个 @org.junit.runners.Suite@RunWith 表示这个类将以哪种形式来跑。后面的类型必须是Runner 接口的实现。在这里指定 为Suite@Suite.SuiteClasses 则可以包含多个test unit 类。

@Suite.SuiteClasses 中的类也可以指定另一个TestSuite ,这样就可以有多个包含层次了。不过其中的test unit 不能间接或者直接的包含当前类,否则就死循环了嘛。

这个类在Eclipse 里面是可以直接Run As JUnit Test 的。

通过手工创建TestSuite

如果不使用标注,可以手动创建TestSuite

package junit.testsuite;

import junit.framework.JUnit4TestAdapter;
import junit.framework.Test;
import junit.framework.TestSuite;
import junit.testcase.TestCase3;

public class AllTestsUsingSuiteMethod {

   
public static Test suite() {
        TestSuite suite =
new TestSuite("Root Test");
       
// $JUnit-BEGIN$
        suite.addTest(
new JUnit4TestAdapter(TestCase3. class ));

        suite.addTest(
new JUnit4TestAdapter(AllTestsUsingAnnotation. class ));
       
// $JUnit-END$
        return suite;
    }

}

上面的类创建了一个TestSuite ,同时向TestSuite 里增加了两个test unit 。其中第二个其实就是上面创建的一个TestSuite

如果在一个TestSuite 里面有重复的testcase ,那么将只有一个会被运行,重复的将被忽略。

这个类在Eclipse 里面是可以直接Run As JUnit Test 的。

运行Testcase

除了能够在Eclipse 里面运行之外,还可以在普通的程序甚至命令行中跑。

下面的code 就是通过应用程序跑TestCase 的。根据结果可以生成需要的表格等有组织的报表。

package junit.testsuite;

import junit.testcase.JUnitTestCase;
import junit.testcase.TestCase2;

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class RunTestInMainApp {

   
public static void main(String[] args) {
        Result result = JUnitCore.runClasses(JUnitTestCase.
class ,
                TestCase2.
class );
       
for (Failure failure : result.getFailures()) {
            System.out.println(failure.toString());
        }
    }

}

在命令行下也可以通过类似的方法跑。

java org.junit.runner.JUnitCore junit.testcase.JUnitTestCase, junit.testcase.TestCase2

 

分享到:
评论

相关推荐

    JUnit-Tutorial.zip_JUnit_zip

    这个“JUnit Tutorial.zip”压缩包包含了一份详细的JUnit实战教程PDF,旨在帮助初学者和经验丰富的开发者更好地理解和运用JUnit进行软件质量保证。 一、JUnit简介 JUnit是一个开源项目,最初由Ernst Meyer和Kent ...

    JUnit Testing Utility Tutorial.pdf

    - **注解**:从 JUnit 4 开始支持注解,如 `@Test`、`@Before`、`@After` 等,简化了测试代码的编写。 #### 四、中级示例 随着项目的复杂度增加,JUnit 提供了更多高级功能来满足不同的测试需求。 **示例 2**:...

    log4j,Junit 学习

    提供的压缩包文件名为 "log4j_tutorial.pdf" 和 "javLog4J.pdf",很可能分别包含了Log4j的基础教程和关于Java中的Log4j使用细节。这些PDF文档可能涵盖了Log4j的配置、用法示例、最佳实践等内容,以及如何在Java项目...

    JUnit_Tutorial

    本指南将引导您完成创建Spring应用程序,然后使用JUnit对其进行测试的过程。 你会建立什么 您将构建一个简单的Spring应用程序,并使用JUnit对其进行测试。 您可能已经知道如何编写和运行应用程序中各个类的单元测试...

    fullstack-tutorial

    4. **版本控制系统**:在fullstack-tutorial中,可能包含Git的使用教程。Git是目前最流行的分布式版本控制系统,它帮助开发者追踪代码变更,协同开发,并实现代码的版本管理。 5. **部署与运维**:学习如何将开发好...

    初学者 Java 编程教程.zip

    junit-tutorial-for-beginners安装工具PDFhttps //github.com/in28minutes/java-a-course-for-beginners/blob/master/InstallingJavaAndEclipse.pdf概述介绍我们热爱编程。我们开设这门课程的目的是激发人们对编程的...

    IntelliJ-IDEA-Tutorial-newMaster

    2. 单元测试:支持JUnit和TestNG等测试框架,编写和运行测试用例,确保代码质量。 七、插件扩展 1. 插件市场:在“Preferences”>“Plugins”中,可以浏览和安装各种插件,增强IDE功能,如Lombok、GitFlow、Code...

    Android代码-android-unit-testing-tutorial

    Android单元测试(三):JUnit单元测试框架的使用 代码和测试代码在junit子package下面 Android单元测试在蘑菇街支付金融部门的实践 代码和测试代码在groupshare子package下面 Android单元测试(四):Mock以及Mockito...

    JUNG2-Tutorial

    ### JUNG2-Tutorial:Java Universal Network/Graph框架详解 #### 一、引言与概述 JUNG2(Java Universal Network/Graph Framework)是JUNG(Java Universal Network/Graph)框架的一个重大修订版本,旨在为Java...

    java指南tutorial.zip

    4. **集合框架**:Java集合框架包括List、Set、Map等接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等,这是处理数据的重要工具。 5. **输入/输出流**:Java的I/O流模型允许程序读取和写入数据,包括...

    j2ee-1_4-doc-tutorial

    4. **Java Persistence API (JPA)** - J2EE 1.4 中的 JPA 是一种用于管理和持久化 Java 对象到关系数据库的标准。 - ORM(对象关系映射)的概念和工作原理。 - CRUD(创建、读取、更新和删除)操作的实现。 5. *...

    IntelliJ-IDEA-Tutorial, IntelliJ IDEA 简体中文专题教程.zip

    4. **编码辅助**:介绍智能代码补全、代码分析、重构工具,如自动导入、快速修复、提取方法等,以及如何利用意图操作(Intentions)改进代码。 5. **调试与测试**:教授如何设置断点、单步执行、查看变量值、进行...

    junit5-developers-guide:JUnit 5指南和示例

    1. JUnit 5开发人员指南 2. GitHub存储库 3.重要的Java开发人员指南 ...4. JUnit 4与JUnit 5的备忘单 5.下载PDF版的《 JUnit 5用户指南》。 https://github.com/RameshMF/ebooks/blob/master/junit5-user-guide.pdf

    The Java EE 6 Tutorial Basic Concepts 4th Edition

    同时,单元测试和集成测试也是Java EE开发过程中的重要环节,书中可能会介绍JUnit和Arquillian等测试工具的使用。 为了帮助读者更好地理解和实践,书中通常会包含丰富的示例代码和练习,鼓励读者动手实践,加深理解...

    swarm JavaTutorial

    4. `SimpleObserverBug2`:可能涉及到观察者模式(Observer Pattern)的应用,这是设计模式中的一种,用于在对象之间建立一种一对多的依赖关系。在Swarm环境中,这种模式可能用于事件驱动的编程或状态管理。 5. `...

    roman10-android-tutorial

    4. **Intent**:Intent是Android中连接不同组件的桥梁,可以用来启动Activity、服务或者广播接收器,也可以传递数据。 5. **UI组件**:Android提供了丰富的UI组件,如按钮、文本框、图像视图等,用于构建用户界面。...

    Eclipse4插件开发相关文档

    4. **Eclipse_4_Tutorial.pdf**: 这个教程可能提供了一步一步的指南,教授如何从头开始创建一个Eclipse4插件。它可能包含关于创建基本插件结构、编写启动代码、注册扩展点和贡献元数据等方面的内容。 5. **01 ...

    automation-testing-with-java-and-selenium:学习使用Java和Selenium进行自动化测试

    JUnit- https://courses.in28minutes.com/p/junit-tutorial-for-beginners Mockito- https: //courses.in28minutes.com/p/mockito-for-beginner-in-5-steps 安装工具 安装视频: https : //www.youtube.co

Global site tag (gtag.js) - Google Analytics