`

【转】TestSuite的使用

阅读更多

      初次在Eclipse中使用JUnit,对于使用TestSuite,遇到了些问题。

      下面的内容来自blog  TestSuite的使用 ,对于入门使用有帮助,故转一下全文。


您定义自己的TestCase,并使用TestRunner来运行测试,事实上TestRunner并不直接运行 TestCase上的单元方法,而是透过TestSuite,TestSuite可以将数个TestCase在一起,而让每个TestCase保持简单。

来看看一个例子:

  • MathToolTest.java
package onlyfun.caterpillar.test;

import onlyfun.caterpillar.MathTool;
import junit.framework.TestCase;

public class MathToolTest extends TestCase {
    public MathToolTest(String testMethod) {
        super(testMethod);
    }

    public void testGcd() {
        assertEquals(5, MathTool.gcd(10, 5));
    }

    public static void main(String[] args) {
        junit.textui.TestRunner.run(MathToolTest.class);
    }
}


在这个例子中,您并没有看到任何的TestSuite,事实上,如果您没有提供任何的TestSuite,TestRunner会自己建立一个,然後这个 TestSuite会使用反射(reflection)自动找出testXXX()方法。

如果您要自行生成TestSuite,则在继承TestCase之後,提供静态的(static)的suite()方法,例如:

public static Test suite() {
     return new TestSuite(MathTool.class);
}


如果您没有提供任何的TestSuite,则TestRunner就会像上面这样自动为您建立一个,并找出testXXX()方法,您也可以如下面定义 suite()方法:

public static Test suite() {
     TestSuite suite = new TestSuite(MathTool.class);
     suite.addTest(new MathToolTest("testGcd"));
     return suite;
}

 
JUnit 并没有规定您一定要使用testXXX()这样的方式来命名您的测试方法,如果您要提供自己的方法(当然JUnit 鼓励您使用testXXX()这样的方法名称),则可以如上撰写,为了要能够使用建构函式提供测试方法名称,您的TestCase必须提供如下的建构函 式:

public MathToolTest(String testMethod) {
    super(testMethod);
}

 

如 果要加入更多的测试方法,使用addTest()就可以了,suite()方法传回一个TestSuite物件,它与 TestCase都实作了Test介面,TestRunner会调用TestSuite上的run()方法,然後TestSuite会将之委托给 TestCase上的run()方法,并执行每一个testXXX()方法。

除了组合TestCase之外,您还可以将数个TestSuite组合在一起,例如:

public static Test suite() {
    TestSuite suite= new TestSuite();
    suite.addTestSuite(TestCase1.class);
    suite.addTestSuite(TestCase2.class);
    return suite;
}

 
如此之来,您可以一次运行所有的测试,而不必个别的运行每一个测试案例,您可以写一个运行全部测试的主测试,而在使用TestRunner时呼叫 suite()方法,例如:

junit.textui.TestRunner.run(TestAll.suite());


TestCase与TestSuite都实作了Test介面,其运行方式为 Command 模式 的一个实例,而TestSuite可以组合数个TestSuite或TestCase,这是 Composite 模式 的一个实例。

分享到:
评论

相关推荐

    Open_Alliance_100BASE-T1_PMA_Test_Suite_v1.0.pdf

    4. 文件中提到的“TestSuite”指的是为IEEE 100BASE-T1 PMA产品功能实施者开发的一套测试,旨在帮助制造商评估他们的产品在执行标准规定的功能时是否合格。测试套件通常包含一系列测试案例,覆盖了产品设计和性能的...

    Baseband Test Suite Structure (TSS) and Test Purposes (TP) System Specification 2.0 + EDR

    ### Bluetooth Baseband Test Suite Structure (TSS) and Test Purposes (TP) System Specification 2.0 + EDR #### 概述 蓝牙技术是无线通信领域的重要组成部分,它旨在实现短距离内各种电子设备间的无线连接。...

    Android Compatibility Test Suite

    Android Compatibility Test Suite(CTS)是Google为确保Android设备与应用程序之间的兼容性而设计的一套全面的测试工具。它的重要性在于,通过CTS,开发者和制造商可以验证他们的设备是否符合Android Compatibility...

    nexus-m2settings-testsuite-1.4.zip

    标题 "nexus-m2settings-testsuite-1.4.zip" 提到的是一个开源项目的构建工具,主要用于Maven的配置和测试。Nexus是Sonatype公司提供的一个强大的Maven仓库管理器,它允许开发者管理和分发Java库和其他依赖。M2...

    markdown-testsuite

    Markdown-testsuite 中的执照信息未在描述中明确给出,但通常开源项目会遵循某种开源许可证,如 MIT、Apache 2.0 或 GPL,这些许可证规定了其他人可以如何使用、修改和分发代码。 贡献者列表中提到了“金子慎太郎”...

    sesame-store-testsuite-2.7.0-beta2.zip

    《 Sesame Store 测试套件2.7.0-Beta2与Sesame Rio扩展解析》 Sesame Store测试套件2.7.0-Beta2是一个关键组件,它是针对开源...对于开发者来说,了解并掌握这些工具的使用,将有助于提升RDF项目开发的效率和质量。

    websockets-compliance:为.NET WebSockets运行Autobahn WebSockets Testsuite

    为.NET WebSockets运行Autobahn WebSockets Testsuite 从安装Docker 克隆 从克隆的存储库中的/ docker文件夹中打开PowerShell 运行docker run -it --rm -v ${PWD}/config:/config -v ${PWD}/reports:/reports -p...

    googleTest 1.6.0 测试套件使用 Demo

    googleTest 1.6.0 测试套件使用Demo 包括以下3种事件的使用示例 testing::Environment 全局事件 TestSuite事件 TestCase 事件 同时包括一份《玩转Google开源C++单元测试框架Google_Test.pdf》文档

    4_Broad-R_Reach_PHY_Control_Test_Suite_v2.pdf

    《BroadR-Reach PHY Control Test Suite Version 2.0》是UNH-IOL(University of New Hampshire InterOperability Laboratory)的Dave Estes和Alexander Seiger共同编写的测试套件,旨在帮助实施者检测BroadR-Reach...

    DITA Test Suite-开源

    DITA映射和主题文件的集合,用于检查工具(例如用于将DITA转换为其他格式的DITA-OT)的性能,包括用于处理DITA规范未涵盖的演示需求的... 现在的主要主机是github,https://github.com/jeremygriffith/DITA-Test-Suite

    Juliet_Test_Suite_v1.2_for_C_Cpp_-_User_Guide.rar_Juliet_test su

    《Juliet Test Suite v1.2 for C/C++ - User Guide》是针对C和C++编程语言的一个测试套件的用户指南。这个测试套件,通常被称为Juliet测试集,是为了帮助开发者和测试人员评估和验证他们的代码是否符合C和C++标准中...

    RoboWeb Test Suite Generator-开源

    3. **成本效益**: 使用开源软件RoboWeb无需支付许可费用,降低了企业或个人的测试成本。 4. **兼容性与扩展性**: 由于开源的特性,RoboWeb通常具有良好的兼容性和可扩展性,能够与其他开源工具集成,如Selenium、...

    yaml-test-suite:适用于YAML的全面,独立于语言的测试套件

    `yaml-test-suite` 还关注了独立于语言的特性,这意味着无论你使用哪种编程语言来实现YAML库,都可以利用这个测试套件进行验证。这对于确保跨语言的兼容性至关重要,因为不同的语言可能有不同的YAML库实现。 此外,...

    玩转Google开源C++单元测试框架Google Test

    ### 玩转Google开源C++单元测试框架Google Test #### 概述 本文旨在详细介绍Google Test——一款由Google开发并开源的C++单元测试框架。Google Test因其强大的功能、良好的文档支持及广泛的社区基础而备受青睐。...

    How To Write Good Test Cases

    1. 测试套件名称的命名(Testsuite names) 测试套件的名称应该尽可能地描述它所代表的内容。尽管套件名称可以相对长一些,但是超过40个字符可能就显得太长了。Robot Framework会根据文件或目录名自动创建套件名称...

    libuv 编程指南

    - **代码示例**:本书提供了一个简单的 HelloWorld 示例来介绍 libuv 的基本使用方式。 - **目的**:通过这个例子帮助初学者快速入门 libuv 的基本结构和流程。 ##### 2.3 错误处理 - **重要性**:错误处理是任何...

    TC10 Wake-up and Sleep Specification for Automotive Ethernet_11-2017.pdf

    从限制级别历史来看,早期版本仅限于OPEN内部使用,直到版本2.0才公开。 文档的主要内容包括: 1.免责声明:通常这部分会声明文档的使用范围、版权信息以及可能存在的技术风险。 2.介绍: - 目标:规范明确了...

    DTG D-BOOK 4

    DTG D-BOOK 4是英国数字地面电视(DTT)技术规范的官方文件,由数字转换集团(DTG)维护和出版。DTG作为一个专业组织,专注于提供数字电视转换相关的测试和一致性服务,包括为英国的Freeview和Freesat服务以及国际...

Global site tag (gtag.js) - Google Analytics