
TestNG
文章平均质量分 56
易生一世
spring-petclinic-graphql开源项目的贡献者
展开
-
TestNG的IMethodInterceptor监听器详解
在TestNG的执行过程中,根据测试方法的执行顺序,可以将测试方法分为如下两类:顺序执行的方法,即依赖于其他测试方法或者被其他测试方法所依赖执行无特定顺序的方法,即测试方法的执行没有特定的顺序要求,不同的TestNG执行可能有不同的顺序对于第一类测试方法,其执行顺序不能随意改变,必须符合依赖关系。但是对于第二类测试方法,TestNG提供了IMethodInterceptor监听原创 2016-08-15 23:32:47 · 2626 阅读 · 0 评论 -
基于JUnit使用PowerMock的Mockito扩展在Maven测试项目中的配置说明
我们知道,PowerMock提供了3个不同的执行方式以支持不同版本的JUnit,包括JUnit4.4+, JUnit4.0~4.3和JUnit3。那么在Maven测试项目中,如何根据不同的JUnit版本,配置pom.xml文件以使用PowerMock的Mockito扩展呢?1. 对于JUnit4.4+,示例如下: 1.6.5 org.powermoc原创 2016-10-25 23:19:46 · 11335 阅读 · 0 评论 -
基于TestNG使用PowerMock的Mockito扩展在Maven测试项目中的配置说明
我们知道,PowerMock也提供了对TestNG的支持在Maven测试项目中,基于TestNG配置pom.xml文件以使用PowerMock的Mockito扩展,示例如下: 1.6.5 org.powermock powermock-module-testng ${powermock.version} test原创 2016-10-25 23:24:44 · 3210 阅读 · 0 评论 -
Mocking的概念及常见Mocking框架概述
在单元测试中,测试一个对象的API往往需要依赖其他对象构成的环境。例如,测试对象是A,但是A的正常工作需要对象B, C提供支持。而对象B, C的初始化又有一个复杂的过程。Mocking为单元测试提供了一个方案,直接设置模拟的对象B, C,在测试对象A时使用模拟出来的对象B, C。这些被模拟出来的对象B, C就被称为Mocking对象,Mocking对象的行为是在单元测试中人为设定的且符合预期。原创 2016-10-31 23:09:21 · 5628 阅读 · 0 评论 -
TestNG概述
TestNG是一个测试框架,支持单元测试,也支持集成测试。1.基于TestN进行测试的步骤如下:编写测试用例,往往要使用TestNG提供的标注等装配测试计划,编辑TestNG的testng.xml配置文件执行测试2.TestNG中的几个概念:suite,通常对应testng.xml中的一个标签,其中可能包含一个或多个testtest,通常对应testng.x原创 2016-08-04 00:27:00 · 848 阅读 · 0 评论 -
利用Spring Boot配置的TestNG测试用例详解
与JUnit不同,Spring Boot本身没有提供与TestNG集成的基础设施。那么如何利用Spring Boot的配置,执行一个TestNG测试用例呢?在Spring Boot提供的大量samples中,有一个spring-boot-sample-testng可供参考。基于该sample中,我们的TestNG测试类如下:@SpringBootTest(classes = { ClientLau...原创 2017-08-11 14:14:12 · 14859 阅读 · 0 评论 -
Spring TestContext Framework对JUnit4和TestNG的集成支持详解
Spring TestContext Framework是spring-test模块中提供的一个测试框架,能够用于单元测试和集成测试。为了与已有的JUnit 4 (JUnit 4.12+)和TestNG测试框架集成使用,Spring TestContext Framework还提供了如下集成的支持。1. Spring JUnit 4 Runner,用以全面集成JUnit 4@RunWith(Spr...原创 2017-08-15 18:16:47 · 3018 阅读 · 0 评论 -
PowerMockito单元测试中的Invalid use of argument matchers问题详解
首先,简单说说PowerMockito进行单元测试的三部曲:打桩,即为非测试目标方法设置返回值,这些返回值在测试目标方法中被使用。执行测试,调用测试目标方法。验证测试结果,如测试方法是否被执行,测试结果是否正确等。其次,在使用PowerMockito框架进行单元测试的过程中,经常遇到如下异常:Invalid use of argument matchers!0 matchers expected...原创 2018-06-13 17:44:44 · 30399 阅读 · 4 评论 -
PowerMockito单元测试中的org.mockito.exceptions.misusing.UnfinishedVerificationException异常详解
首先给出测试方法的片段如下:MyAgent rpc = new MyAgent("myAgentName");PowerMockito.verifyPrivate(rpc).invoke("initNode");PowerMockito.verifyPrivate(rpc).invoke("initPowerSwitch", Mockito.anyString(), Mockito.anyIn...原创 2018-06-14 17:35:28 · 10342 阅读 · 0 评论 -
JTF的Unable to invoke request异常或Unable to find a MessageBodyReader of content-type application..异常详解
基于Jersey开发的一个操作OpenStack的REST服务,利用Jersey的Test Framework编写单元测试类如下:public class RestAddressTest extends JerseyTest { Integer autoId = 1; @BeforeClass public void before() throws Excepti...原创 2018-10-25 23:53:11 · 5520 阅读 · 1 评论 -
suite-files及其在编制TestNG测试计划中的应用
熟悉TestNG的朋友们往往都知道testng.xml文件,testng.xml文件是我们定义测试计划的配置文件,其中可以进行各种复杂的配置。但是,当我们有多个testng.xml文件时(当然文件名不同),如何能够组合这些配置文件呢?这里介绍一个特别但是却没有在TestNG文档中提及的suite-files,也被称为Suite of Suites。首先,组合若干个testng.xml配置文...原创 2018-12-29 22:51:42 · 1856 阅读 · 1 评论 -
TestNG中在一个test标签中的多个测试类之间共享中间数据的方法
在TestNG的一个测试suite中,在一个<test>标签中可以包含多个测试类,那么这些测试类之间如何共享动态中间数据呢?比如在一个测试类Producer中,一个测试方法产生了中间数据groupIds;而在后续测试的另一个测试类Consumer中,一个测试方法要访问这个中间数据。测试套件如下:...<test> <classes> &l...原创 2019-02-14 21:33:28 · 2680 阅读 · 3 评论 -
TestNG中在一个suite标签中的多个test标签之间共享中间数据的方法
在TestNG的一个测试suite中,可能存在多个<test>,那么在不同的<test>标签内部的测试类,其之间如何共享动态中间数据呢?比如在一个<test>中的一个测试类Producer中,一个测试方法产生了中间数据groupIds;而在后续另一个<test>中的一个测试类Consumer中,一个测试方法要访问这个中间数据。测试套件如下:...原创 2019-02-14 22:21:09 · 3124 阅读 · 1 评论 -
PowerMock概述
1.PowerMock的概念PowerMock包含两个彼此独立的扩展实现,一个基于EasyMock的扩展实现,另一个基于Mockito的扩展实现。此外,基于Mockito2的扩展实现还在实验过程中。所以在执行PowerMock测试时,需要同时使用EasyMock或Mockito。2.PowerMock的独特功能PowerMock可以实现对构造函数, static方法, final方原创 2016-10-24 23:22:58 · 1160 阅读 · 0 评论 -
JMockit概述
JMockit是一款轻量级的Java单元测试的mock工具。JMockit支持JUnit框架和TestNG框架两种执行引擎,建议使用JUnit 5+版本或TestNG 6.2+版本。JMockit的最新版本是2016.10发布的1.29。在Maven项目中,引用JMockit的pom.xml配置如下:org.jmockitjmockit1.29test参考文献:过时原创 2016-11-02 23:07:33 · 979 阅读 · 0 评论 -
TestNG的IInvokedMethodListener监听器详解
在TestNG的执行过程中,通过IInvokedMethodListener监听器,能够在调用某个测试方法之前或者之后发出通知。目前,该监听器只支持调用如下测试方法时发出通知:@Test方法Configuration方法,即@Before*方法和@After*方法IInvokedMethodListener监听器中定义了如下两个方法,分别表示在被调用的测试方法之前或之后发出原创 2016-08-15 23:56:08 · 2222 阅读 · 0 评论 -
TestNG的IHookable监听器详解
在TestNG的执行过程中,有一种应用场景,就是根据当前执行的情况决定是否执行某个测试方法。即测试方法的执行有先决条件,满足条件则执行,否则就跳过执行。这种应用场景的典型应用是执行测试方法前进行授权检查,有授权则执行测试方法,没有授权则跳过执行。IHookable监听器为这种应用场景提供了可能。IHookable监听器接口继承自ITestNGListener接口,其中定义了唯一的方法:vo原创 2016-08-16 09:05:14 · 4068 阅读 · 0 评论 -
TestNG的IConfigurable监听器详解
TestNG的IConfigurable监听器与IHookable监听器的用法非常类似。IConfigurable监听器接口也继承自ITestNGListener接口,其中也定义了唯一的方法:void run(IConfigureCallBack callBack, ITestResult testResult);1. 在TestNG执行任何一个配置方法(注意,这里不是测试方法)之前,原创 2016-08-16 23:51:09 · 739 阅读 · 0 评论 -
TestNG的IConfigurationListener监听器详解
对于一个配置方法来说,其执行可能有三种可能的情况:成功失败跳过在TestNG的执行过程中,通过IConfigurationListener监听器,能够处理上述配置方法的执行事件。TestNG的IConfigurationListener监听器继承自ITestNGListener接口,定义了如下方法:void onConfigurationSuccess(ITes原创 2016-08-17 00:04:40 · 1332 阅读 · 0 评论 -
TestNG的IExecutionListener监听器详解
IExecutionListener监听器继承自ITestNGListener接口,监听TestNG执行的开始和结束。void onExecutionStart();void onExecutionFinish();TestNG启动执行之前调用;TestNG执行完毕所有的测试后调用。原创 2016-08-17 09:51:36 · 1689 阅读 · 0 评论 -
TestNG的ISuiteListener监听器和IAlterSuiteListener监听器详解
TestNG的测试套件(suite)类似于一个测试方案,其中包含若干个测试用例。TestNG通常一次执行一个测试套件,也可以一次执行多个测试套件。ISuite接口是定义测试套件的接口,可以说一个ISuite接口的实现就是一个测试套件。TestNG提供了ISuite默认的实现org.testng.SuiteRunner,负责执行一个测试套件中包含的所有测试用例。SuiteRunner通过原创 2016-08-17 12:27:04 · 3112 阅读 · 0 评论 -
TestNG中的数据源DataProvider概述
在上一篇文章中,我们知道带参数的测试方法,可以在testng.xml配置文件中为其参数赋值。但是那只适用于初始值简单且确切的情况。对于初始值是复杂的对象,或者初始值是执行过程中生成的情况,就只能使用这里的数据源@DataProvider。使用TestNG中的数据源@DataProvider,所有的工作都在测试类中完成。具体过程分为两个步骤,第一步是定义数据源,第二步是在测试方法中引用数据源原创 2016-08-07 11:29:25 · 8307 阅读 · 0 评论 -
TestNG中测试方法的依赖关系详解
在TestNG的测试中,一个测试方法的执行往往需要依赖其他测试方法的先期或延后执行,这种测试方法的执行先后顺序就被称为测试方法之间的依赖关系。1. 一个被依赖的测试方法测试方法之间的依赖关系往往是在测试类中定义的,如下所示:@Testpublic void serverStartedOk() {}//被依赖的测试方法 @Test(dependsOnMethods = { "se...原创 2016-08-07 23:55:38 · 8177 阅读 · 6 评论 -
TestNG中的运行时测试实例工厂详解
在前面的文章中,我们介绍了@Parameters标注,可以在运行时为测试方法设置参数。但是,对于一个测试类,只是因为测试方法的参数不同,就不得不在testng.xml中定义大量雷同的测试用例,这样的做法将很快导致测试规划的冗长,难以维护。为此,TestNG还提供了测试实例的工厂机制,用到了@Factory标注。在这种工厂机制中,工厂类定义了一个使用@Factory标注声明的方法,该方法必须返回原创 2016-08-09 04:51:57 · 2462 阅读 · 0 评论 -
TestNG测试的并发执行详解
TestNG在执行测试时,默认suitethreadpoolsize=1,-randomizesuites=false,即非并发顺序执行测试。但是TestNG提供了多种方式,以支持测试的并发多线程执行。1. 针对多个测试规划的情况,为每个testng*.xml配置文件使用独立的线程执行java org.testng.TestNG -suitethreadpoolsize 3 test...原创 2016-08-09 05:41:33 · 15309 阅读 · 2 评论 -
TestNG的编程执行概述
在前面的文章中,我们提到过执行TestNG测试的几种方式。最常用的是直接命令行方式启动,如下所示:java org.testng.TestNG testng.xml但是在实际的自动化测试应用中,首先要启动测试应用,然后TestNG作为一种测试框架,被测试应用动态编程调用。这就是本文要介绍的在测试应用中编程调用TestNG的实现。1. 编程调用TestNG,示例如下:TestNG...原创 2016-08-10 06:55:50 · 1901 阅读 · 4 评论 -
TestNG的监听器概述
TestNG的监听器(listener)是一系列的接口,用于在运行时设置动态参数,以改变TestNG的执行过程。TestNG的所以监听器都是org.testng.ITestNGListener接口的实现。1. 常见的TestNG提供的监听器接口如下:IAnnotationTransformer IAnnotationTransformer2 IAnnotationTransform...原创 2016-08-12 10:03:25 · 3857 阅读 · 0 评论 -
TestNG的IAnnotationTransformer监听器详解
到目前为止(TestNG 6.9.10),TestNG提供的IAnnotationTransformer监听器原创 2016-08-15 09:50:53 · 3464 阅读 · 0 评论 -
TestNG中的@Factory与@DataProvider的执行比较
TestNG中@Factory与@DataProvider的功能大相径庭,但是在多次执行的问题上常常理不清。1.@DataProvider首先,必须明确,使用@DataProvider修饰的方法,只负责提供测试数据,而且是测试执行前就确定了的静态数据。该方法必须被其他测试方法引用才意义。其次,必须强调,使用@DataProvider修饰的方法,其返回的数据类型必须为Object[][]...原创 2019-02-13 22:52:59 · 1648 阅读 · 0 评论