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了。开源的东西果然还是方便啊。
分享到:
相关推荐
1、testng测试报告模板BeautifulReport 2、testng.xml文件
TestNG依赖包,包含了org.testng.CommandLineArgs类,导入后可解决因找不到依赖而出现的问题
testng注解方法的执行顺序,经过个人验证,如有不足欢迎提出,谢谢
开源自动化测试框架testng包,用于appium+java+android测试
最近项目要单元测试案例,testng测试工具很强大,用着很爽
无论您使用TestNG,JUnit或其他测试框架,本书提供的测试设计模式都会告诉您如何改进您的测试,对如何让代码和设计变得更可测试提供具体的建议。 目录: 第1章 起步 1.1 超越JUnit 3 1.2 JUnit 4 1.3 针对可测试性而...
spring集成TestNG与Mockito框架单元测试方法
《Java测试新技术TestNG和高级概念》通过针对有效测试Java应用程序以及围绕可测试性来设计应用程序和组件展示了这些有效的测试技术,并给出了每种测试方法的优点和不足,展示了解决常见问题的不同选择。《Java测试新...
本书主要内容包括: 展示了与测试有关的折衷考虑,这样您就能在测试...无论您使用TestNG,JUnit或其他测试框架,本书提供的测试设计模式都会告诉您如何改进您的测试,对如何让代码和设计变得更可测试提供具体的建议。
Webdriver+TestNG测试用例执行顺序
《Java测试新技术:TestNG和高级概念》通过针对有效测试Java应用程序以及围绕可测试性来设计应用程序和组件展示了这些有效的测试技术,并给出了每种测试方法的优点和不足,展示了解决常见问题的不同选择。《Java测试...
testng的测试资料 TestNG是一个测试框架,目的在于简化Java应用从单元测试到集成测试的测试代码编写。 一个TestNG类就是一个至少包含一个TestNG ...源代码中,一个测试方法就是一个带有annotation”@Test”的Java方法
本书主要内容包括: 展示了与测试有关的折衷考虑,这样您就能在测试...无论您使用TestNG,JUnit或其他测试框架,本书提供的测试设计模式都会告诉您如何改进您的测试,对如何让代码和设计变得更可测试提供具体的建议。
spring集成TestNG与Mockito框架单元测试方法,方便学习者能快速上手如何单测,对自己的代码能够有质量保证。
引言- 9 -认识TestNG认识TestNG- 10 -先认识一下TestNG,这里有一个FooServiceImpl,里面有两个方法,一个是给计数器+1,一
testng-6.10.jar
ant+selenium+testng自动化测试方案
单元测试框架TestNG的eclipse插件安装说明: 本资源包含org.jtester.plugin_0.2.2.jar和org.testng.eclipse_6.1.1.20110713_1401.7z。将org.testng.eclipse_6.1.1.20110713_1401.7z解压缩后得到的文件org.testng....
单元测试 框架 testng6.8
适用于想了解TestNG测试的同学