`
反求诸己
  • 浏览: 540777 次
  • 性别: Icon_minigender_1
  • 来自: 湖南娄底
社区版块
存档分类
最新评论

JUnit测试骨架

 
阅读更多

JUnit测试骨架
使用JUnit时,主要都是通过继承TestCase类别来撰写测试用例,使用testXXX()名称来撰写单元测试。
用JUnit写测试真正所需要的就三件事:
1.  一个import语句引入所有junit.framework.*下的类。
2.  一个extends语句让你的类从TestCase继承。
3.  一个调用super(string)的构造函数。

 

下面针对求最大值函数编写测试用例:
1.简单测试:[7,8,9]->9;
2.位序测试:[9,8,7] ->9;[7,9,8] ->9;[8,7,9] ->9;
3.重复值测试:[9,7,9,8] ->9;
4.单值测试:[1]->1;
5.负值测试:[-7,-8,-9]->-7;
6.空值测试:[]->抛出异常;
测试类NumberToolTest:

 

public class NumberToolTest extends TestCase {
    public NumberToolTest(String name) {
       super(name);
    }

    public void testSimple() {
       assertEquals(9, NumberTool.getMax(new int[] { 7, 8, 9 }));
    }

    public void testOrder() {
       assertEquals(9, NumberTool.getMax(new int[] { 9, 8, 7 }));
       assertEquals(9, NumberTool.getMax(new int[] { 7, 9, 8 }));
       assertEquals(9, NumberTool.getMax(new int[] { 8, 7, 9 }));
    }

    public void testDups() {
       assertEquals(9, NumberTool.getMax(new int[] { 9, 7, 9, 8 }));
    }

    public void testOne() {
       assertEquals(1, NumberTool.getMax(new int[] { 1 }));
    }

    public void testNegitave() {
       assertEquals(-7, NumberTool.getMax(new int[] { -7, -8, -9 }));
    }

    public void testEmpty() {
       try {
           NumberTool.getMax(new int[] {});
           fail("Should have thrown an exception");
       } catch (RuntimeException e) {
           assertTrue(true);
       }
    }
}

 

Case 1:如果你只想执行某TestCase中的部分测试函数,则可自己构建TestSuite

做法:

下面的代码针对NumberToolTest中的两个测试函数testSimple()和testNegitave()进行测试。

import com.zj.c01.NumberToolTest;
import junit.framework.Test;
import junit.framework.TestSuite;

public class PartTest {
    public static Test suite() {
       TestSuite suite = new TestSuite();
       suite.addTest(new NumberToolTest("testSimple"));
       suite.addTest(new NumberToolTest("testNegitave"));
       return suite;
    }
}

 

Case 2:组合多个testCase一起来测试

public class NumberToolTest2 extends TestCase {
    private int[] arr;

    public NumberToolTest2(String name) {
       super(name);
    }

    protected void setUp() throws Exception {
       super.setUp();
       arr = new int[] { -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5 };
    }

    protected void tearDown() throws Exception {
       super.tearDown();
       arr = null;
    }

    public void testMax() {
       assertEquals(5, NumberTool.getMax(arr));
    }

    public void testMin() {
       assertEquals(-5, NumberTool.getMin(arr));
    }
}

做法:

下面会将NumberToolTest2和NumberToolTest一起来进行测试

public class CompositeTest {
    public static Test suite() {
       TestSuite suite = new TestSuite("Running all tests.");
       suite.addTestSuite(MathToolTest.class);
       suite.addTestSuite(NumberToolTest.class);
       return suite;
    }
}

 

注意:

每一个定义好的TestCase,都使用TestRunner 来运行测试,事实上TestRunner并不直接运行TestCase上的单元方法,而是通过TestSuite ,TestSuite可以将数个TestCase组合在一起。
在上面的例子中,并没有看到任何的TestSuite,这是因为TestRunner的run()方法中会建立TestSuite:
static public void run(Class testClass) {
    run(new TestSuite(testClass));
}

 

分享到:
评论

相关推荐

    JUnit in java 真正的测试用例实战.doc

    例如,在Eclipse中,右键选择待测试的类,新建JUnit测试用例,指定测试类名和根目录,IDE会自动生成基本的测试框架,包括`setUp()`和`tearDown()`方法,以及针对每个测试方法的骨架。 测试用例通常包含以下几个关键...

    [ 无敌版]用JUnit框架实现Java单元测试教程,速成JUNIT

    `junit.framework` 包含了 `TestSuite`、`TestCase`、`TestResult` 等核心类,它们共同构建了测试的骨架。`TestSuite` 用于组合多个 `TestCase`,形成测试集合。`TestCase` 是编写具体测试用例的基类,程序员通常...

    junit-4.5-SNAPSHOT-20070720-

    最后,“junit”目录可能包含了JUnit库的jar文件,这是运行和编写JUnit测试的必需组件。开发者通常会将这个jar文件添加到项目的类路径中,以便能够使用JUnit提供的所有功能。 总的来说,"junit-4.5-SNAPSHOT-...

    junit源码以及牵涉到的设计模式

    - **简化测试执行**:JUnit通过`TestCase`的`run()`方法简化了测试的执行流程,使用户只需关注测试逻辑本身。 - **避免硬编码**:通过使用Command模式,JUnit避免了在执行测试时的硬编码,使得测试更加灵活。 ...

    Junit设计模式分析

    5. 模板方法模式:`TestCase`类定义了一个模板方法,即`runTest()`,它是所有测试用例的骨架。子类可以重写`setUp()`和`tearDown()`方法,这些方法会在每个测试前后的固定时刻被调用,形成了一种模板方法模式。 6. ...

    [JUnit4]測試RFC1

    在NetBeans这样的IDE中,可以使用内置的插件自动生成测试类的骨架。对于PpProxy4JCoMMRFQ,我们创建了一个名为PpProxy4JCoMMRFQTest的测试类。这个类将包含一系列的测试方法,每个方法对应PpProxy4JCoMMRFQ类中的一...

    BankApplication-DesignPatternsAssignment:具有 GUI 和 JUnit 测试用例的银行系统作为 Humber College 课程设计模式和软件测试中的作业完成

    在Humber College的课程设计模式与软件测试中,学生们被分配了一个名为"BankApplication-DesignPatternsAssignment"的任务,旨在将理论知识应用于实际项目开发,以构建一个具备图形用户界面(GUI)和JUnit测试用例的...

    开源测试技术.pdf

    - **定义**: JUnit是一种用于Java编程语言的单元测试框架,属于xUnit测试框架家族的一员。 - **最新版本及特点**: - 最新版本(JUnit 4)引入了许多新特性,比如注解(@Before, @After, @Test等),这些注解简化了测试...

    maven-archetype-quickstart-1.4.jar.zip

    `maven-archetype-quickstart` 就是这样一个模板,用于创建一个简单的Java应用,包含一个主类和一个JUnit测试类。当我们使用`mvn archetype:generate`命令并指定这个archetype时,Maven会自动生成一个全新的项目结构...

    58丨模板模式(上):剖析模板模式在JDK、Servlet、JUnit等中的应用1

    例如,JUnit中的`TestCase`类使用了模板方法模式,`runTest()`方法定义了执行测试的基本流程,而测试类只需覆盖`setUp()`和`tearDown()`等方法来准备和清理测试环境,而具体的测试逻辑则通过`@Test`注解的函数来实现...

    ForgeModdingSkeleton:用于构建Forge mod的骨架

    锻造骨架用于建造Forge mods的骨架去做从字符串支持Curse ChangeLog(部分完成) Traar的Sonarqube和Jar签名支持Sonarqube和Jar签名支持CircleCI 秘密解析器也应该支持Gradle属性修复JUnit3,JUnit4和JUnit Vintage...

    Appfuse教程Appfuse开发.pdf

    6. **自动化测试支持**:内置了 JUnit 测试框架的支持,帮助开发者进行单元测试和集成测试,确保代码质量。 #### 三、Appfuse框架的组成部分 Appfuse 主要分为以下几个部分: 1. **DAO(Data Access Object)层**...

    四,android四大组件基础介绍及打电话,发短信简单应用 &单元测试

    在Android开发中,我们可以使用JUnit和 Espresso 进行单元测试和UI测试。对于四大组件,每个组件都有特定的测试策略。例如,Activity可以通过ActivityTestRule进行测试,Service则可以使用ServiceTestRule,而...

    cucumberjvm-webdriver-example:这是使用 maven、cucumber-jvm 和 selenium webdriver 的测试框架的骨架

    这是使用 maven、cucumber-jvm 和 selenium webdriver 的测试框架的骨架。 这遵循使用 PageFactory 实例化页面对象的页面对象设计模式。 这包含一个用于 BBC 网页演示目的的场景。 如何运行测试: 要在本地运行...

    UT自动生成

    3. **测试骨架生成**:为每个可测试的单元创建基本的测试结构,包括设置、执行和断言部分。 4. **集成开发环境(IDE)集成**:与常见的IDE如Visual Studio、IntelliJ IDEA、Eclipse等集成,提供快捷的生成和运行测试...

    创建Spring boot项目骨架源码实例

    - 对于测试,Spring Boot支持JUnit和Mockito等库进行单元测试和集成测试。 通过这个实例,初学者能够理解Spring Boot项目的基本构建和运行流程,以及如何利用IDEA和Maven工具来加速开发。学习并熟练掌握这些知识点...

    基于 LeeSite 的项目骨架生成工具,可以快速的搭建一个将 LeeSite 作为依赖的 Java Web 项目.zip

    8. **单元测试**:使用 JUnit 或 Spock 进行代码测试。 9. **文档**:如 README 文件,提供关于如何运行和使用项目的说明。 总的来说,这个工具是为了简化基于 LeeSite 的 Java Web 项目初始化过程而设计的,通过...

    Java Web后端开发中(Java EE、Spring生态)常用的项目骨架、示例、组件整合样例.zip

    此外,开发过程中还会涉及到单元测试、集成测试,使用JUnit、Mockito等工具进行验证。持续集成和部署可能涉及Jenkins、Docker等技术。 总的来说,这个压缩包文件提供的是一个Java Web后端开发的基础框架,涵盖了...

Global site tag (gtag.js) - Google Analytics