`
sdyouyun
  • 浏览: 120720 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

改进TestNG的测试方法依赖管理

阅读更多
TestNG是一个很强大的单元测试工具。和JUnit3、4版本相比,TestNG都多了一个很好的功能“测试依赖”。比如我可以写一个测试方法如下:
	@Test(dependsOnMethods="testMethod2")
	public void testMethod1() {
        System.out.println("in testMethod1");
	}

这样就表示在执行testMethod1测试之前,先去检查一下testMethod2这个方法,如果testMethod2这个方法测试通过了,才会执行testMethod1,否则直接将testMethod1的执行结果标记为“skipped”。在大型项目的测试中,特别是涉及到一些不纯粹是单元测试的测试时,这个特性非常有用。dependsOnMethods的属性可以引用其他类中的测试方法,如可以写成@Test(dependsOnMethods="com.test.Test1.testMethod2")。

但这样,我如果要单独执行某个测试类的话,麻烦就来了(这种单独执行某个测试类的方法在单元测试中基本不存在,但在一些自动化的集成测试、功能测试中因为执行时间的问题就很常见了)。我写了在com.test.Test1这个类的某个测试方法里写了@Test(dependsOnMethods="com.test.Test2.testMethod2"),在执行Test1时,会直接提示出错找不到testMethod2方法,只有把Test1和Test2作为一个suite来统一执行的时候才可以正常运行。

TestNG还有对Group的依赖管理,也同样有这个问题。

为了解决这个问题,得到一个适合做集成测试、功能测试的TestNG版本,研究了一些TestNG的源代码,发现修改两个地方可以解决这个问题:
1. org.testng.internal.MethodHelper的findMethodsNamed方法。这个方法是用来根据名字查找测试方法的,不存在会抛出异常。将抛出异常的部分注释掉即可,如下。
			if (!foundAtLeastAMethod) {
				System.out.println("依賴的方法沒有找到。");
				
//				throw new TestNGException(mainMethod
//						+ "() is depending on nonexistent method "
//						+ currentRegexp);
			}

这个方法只有在检查测试依赖项时才会被调用,可以放心修改,不会影响其他功能。
2. org.testng.internal.Invoker类的checkDependencies方法,这里头有一段为检查依赖中是否有不存在group,将其注释掉即可。

		// Any missing group?
		// if (testMethod.getMissingGroup() != null) {
		// return false;
		// }



这样修改了之后,当某个测试方法的依赖中有不存在的method或者group时,就不会skip这个method,而是直接执行这个method了。开源的东西果然还是方便啊。
  • testng-5.8-jdk15.jar (824.3 KB)
  • 描述: 修改了依赖管理之后的testng5.8,适用于jdk1.5版本
  • 下载次数: 53
分享到:
评论

相关推荐

    TestNg测试ppt

    - **JUnit** 已经在单元测试领域取得了巨大的成功,而 **TestNG** 则是在 JUnit 的基础上进行了许多改进和创新。 - **更多的灵活性**:TestNG 支持更灵活的测试组织方式,比如测试分组、依赖测试等。 - **依赖性测试...

    testng架包下载

    TestNG的主要目标是简化和改进软件测试过程,支持多种测试类型,如单元测试、集成测试、功能测试等。 在“testng架包下载”这一主题中,首先你需要了解如何获取TestNG的库文件。通常,你可以通过以下途径获得TestNG...

    TestNG插件

    TestNG插件允许用户在IDE如Eclipse或IntelliJ IDEA中无缝地编写、运行和管理TestNG测试。 TestNG的核心特性包括: 1. **并发测试**:TestNG支持多线程执行测试用例,可以同时运行不同的测试,这对于测试分布式系统...

    testng-6.9.4和testng-6.8.8.zip

    这两个JAR文件是TestNG的可执行库,包含了框架的所有类和资源,可以被Java应用程序直接引用来运行TestNG测试。 TestNG的主要特性包括: 1. **配置方法**:允许在测试开始前进行一些设置,如初始化数据库连接,结束...

    testng-6.8.8文件

    - **依赖性管理**:使用@test注解的dependsOnMethods属性,可以指定测试方法之间的依赖关系。 - **异常处理**:如果测试方法抛出预期的异常,TestNG会认为测试成功;如果不抛出预期的异常,则测试失败。 - **数据...

    TestNG官方文档中文版.pdf

    TestNG设计初衷是为了提供一种更为简洁和强大的测试方法,相较于JUnit,TestNG支持更多高级特性,如并行测试执行、依赖管理、数据驱动测试等。 #### 1.2 特性介绍 - **并行测试执行**:允许用户在同一时间运行多个...

    TestNG离线安装文件 site

    对于Eclipse用户来说,通过Eclipse插件可以方便地创建、运行和管理TestNG测试用例。 Eclipse是流行的Java集成开发环境(IDE),而TestNG Eclipse插件则允许用户在Eclipse中无缝地使用TestNG。这个离线包确保了即使...

    TestNG教程

    4. 运行测试:通过IDE插件或命令行工具运行TestNG测试。 四、高级特性 1. 数据驱动测试:使用@DataProvider提供测试数据,可以实现对同一测试方法的不同输入数据进行测试。 2. Soft Assert:软断言允许测试继续执行...

    testng6.14.3

    TestNG是Java领域的一款强大的自动化测试框架,由Cédric Beust创建,它在JUnit的基础上进行了许多改进和扩展,提供了更丰富的功能,特别是在并行测试、数据驱动测试和基于注解的测试配置方面。TestNG 6.14.3是这个...

    Java测试新技术TestNG和高级概念.part2

    无论您使用TestNG,JUnit或其他测试框架,本书提供的测试设计模式都会告诉您如何改进您的测试,对如何让代码和设计变得更可测试提供具体的建议。 目录: 第1章 起步 1.1 超越JUnit 3 1.2 JUnit 4 1.3 针对可测试性而...

    测试工具testng架包

    6. **依赖注入**:TestNG支持依赖注入,可以将对象实例化和管理交给框架处理,减少测试代码的复杂性。这在使用Spring等依赖注入框架时特别有用。 7. **参数化测试**:通过`@Parameters`注解,TestNG可以进行参数化...

    testng eclipse离线 插件

    通过编写XML配置文件或直接在Java代码中使用注解,可以定义和执行TestNG测试。 总结来说,TestNG Eclipse离线插件提供了一种便捷的方式,在不连接网络的情况下在Eclipse中安装和使用TestNG。无论是初学者还是经验...

    testng-6.8.6

    描述中提到的“testng测试时的jar包,另外包含源文件”,这意味着下载的压缩包不仅包括TestNG库的jar文件,供开发者在项目中引用以执行测试,还包含了源代码。这对于学习和调试TestNG或者自定义扩展其功能非常有用,...

    testng 6.8.8

    `testng-6.8.8.jar` 文件是TestNG的运行时库,包含了所有运行TestNG测试所需的类和资源。而`testng-6.8.8-sources.jar` 文件则包含了源代码,这对于开发者理解TestNG内部工作原理和进行定制化开发非常有帮助。 总的...

    testNG+selenium相关jar包

    3. **集成TestNG与Selenium**:通过在TestNG测试类中导入Selenium的相关库,我们可以创建Selenium WebDriver对象,然后编写测试方法来执行Web自动化任务。TestNG的注解如`@Test`可以用于标记测试方法,`@...

    TestNG eclipse Plugin 6.9.10

    TestNG 是一个强大的测试框架,尤其在自动化测试领域中广泛应用,它提供了丰富的功能,包括并发测试、参数化、依赖管理等。Eclipse TestNG Plugin 是一个集成插件,用于将 TestNG 功能无缝融入 Eclipse IDE,让开发...

    Java测试新技术TestNG和高级概念.part3

    本书主要内容包括: 展示了与测试有关的折衷考虑,这样您就能在测试...无论您使用TestNG,JUnit或其他测试框架,本书提供的测试设计模式都会告诉您如何改进您的测试,对如何让代码和设计变得更可测试提供具体的建议。

    Selenium+TestNG自动化测试

    TestNG是另一个流行的自动化测试框架,它增强了JUnit的功能,提供了更灵活的测试配置,如并行测试、分组测试和依赖管理。Selenium与TestNG结合使用,能够构建出高效且可扩展的自动化测试体系。 总结来说,Selenium+...

    下一代java测试_testng及高阶概念

    《下一代Java测试:TestNG及相关高级概念》这本书不仅涵盖了TestNG的基础知识,更重要的是深入探讨了TestNG的一些高级特性,如并行执行、数据驱动测试、测试依赖管理等。这些特性大大提升了Java应用程序的测试质量和...

    追求代码质量:Junit4与TestNG的对比

    2. **测试分组**:TestNG允许将测试组织成不同的组,可以单独运行或跳过特定组的测试,这对于管理复杂测试场景非常实用。 3. **更丰富的注解**:除了JUnit 4的基本注解外,TestNG还提供了如@BeforeSuite, @...

Global site tag (gtag.js) - Google Analytics