TestNG+Spring集成测试示例

这篇博客,我们将提供一个使用TestNG测试spring组件的实例,需要的工具如下:

  1. TestNG 6.8.7
  2. Spring 3.2.2.RELEASE
  3. Maven 3
  4. Eclipse IDE

1. 项目依赖

需要spring-test.jar,pom.xml如下:

pom.xml
<code class=" language-markup" style="padding: 0px; line-height: 1.5; font-family: Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace; word-spacing: normal; -ms-word-break: normal; -ms-word-wrap: normal;"><span style="background-color: rgb(247, 247, 249);"><span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"><</span>properties</span><span class="token punctuation" style="color:#999999;">></span></span>
	<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"><</span>spring.version</span><span class="token punctuation" style="color:#999999;">></span></span>3.2.2.RELEASE<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"></</span>spring.version</span><span class="token punctuation" style="color:#999999;">></span></span>
	<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"><</span>testng.version</span><span class="token punctuation" style="color:#999999;">></span></span>6.8.7<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"></</span>testng.version</span><span class="token punctuation" style="color:#999999;">></span></span>
<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"></</span>properties</span><span class="token punctuation" style="color:#999999;">></span></span>

<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"><</span>dependencies</span><span class="token punctuation" style="color:#999999;">></span></span>
	<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"><</span>dependency</span><span class="token punctuation" style="color:#999999;">></span></span>
		<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"><</span>groupId</span><span class="token punctuation" style="color:#999999;">></span></span>org.springframework<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"></</span>groupId</span><span class="token punctuation" style="color:#999999;">></span></span>
		<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"><</span>artifactId</span><span class="token punctuation" style="color:#999999;">></span></span>spring-core<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"></</span>artifactId</span><span class="token punctuation" style="color:#999999;">></span></span>
		<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"><</span>version</span><span class="token punctuation" style="color:#999999;">></span></span>${spring.version}<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"></</span>version</span><span class="token punctuation" style="color:#999999;">></span></span>
	<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"></</span>dependency</span><span class="token punctuation" style="color:#999999;">></span></span>

	<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"><</span>dependency</span><span class="token punctuation" style="color:#999999;">></span></span>
		<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"><</span>groupId</span><span class="token punctuation" style="color:#999999;">></span></span>org.springframework<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"></</span>groupId</span><span class="token punctuation" style="color:#999999;">></span></span>
		<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"><</span>artifactId</span><span class="token punctuation" style="color:#999999;">></span></span>spring-test<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"></</span>artifactId</span><span class="token punctuation" style="color:#999999;">></span></span>
		<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"><</span>version</span><span class="token punctuation" style="color:#999999;">></span></span>${spring.version}<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"></</span>version</span><span class="token punctuation" style="color:#999999;">></span></span>
	<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"></</span>dependency</span><span class="token punctuation" style="color:#999999;">></span></span>

	<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"><</span>dependency</span><span class="token punctuation" style="color:#999999;">></span></span>
		<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"><</span>groupId</span><span class="token punctuation" style="color:#999999;">></span></span>org.testng<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"></</span>groupId</span><span class="token punctuation" style="color:#999999;">></span></span>
		<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"><</span>artifactId</span><span class="token punctuation" style="color:#999999;">></span></span>testng<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"></</span>artifactId</span><span class="token punctuation" style="color:#999999;">></span></span>
		<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"><</span>version</span><span class="token punctuation" style="color:#999999;">></span></span>${testng.version}<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"></</span>version</span><span class="token punctuation" style="color:#999999;">></span></span>
		<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"><</span>scope</span><span class="token punctuation" style="color:#999999;">></span></span>test<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"></</span>scope</span><span class="token punctuation" style="color:#999999;">></span></span>
	<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"></</span>dependency</span><span class="token punctuation" style="color:#999999;">></span></span>
<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"></</span>dependencies</span><span class="token punctuation" style="color:#999999;">></span></span></span></code>

2. Spring 组件

创建一个简单的spring组件,之后我们使用TestN个测试该组件。

EmailGenerator.java
<code class=" language-java" style="padding: 0px; line-height: 1.5; font-family: Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace; word-spacing: normal; -ms-word-break: normal; -ms-word-wrap: normal;"><span style="background-color: rgb(247, 247, 249);"><span class="token keyword" style="color:#077aa;">package</span> com<span class="token punctuation" style="color:#999999;">.</span>mkyong<span class="token punctuation" style="color:#999999;">.</span>testng<span class="token punctuation" style="color:#999999;">.</span>project<span class="token punctuation" style="color:#999999;">.</span>service<span class="token punctuation" style="color:#999999;">.</span>email<span class="token punctuation" style="color:#999999;">;</span>

<span class="token keyword" style="color:#077aa;">public</span> <span class="token keyword" style="color:#077aa;">interface</span> <span class="token class-name">EmailGenerator</span> <span class="token punctuation" style="color:#999999;">{</span>

	String <span class="token function" style="color:#dd4a68;">generate</span><span class="token punctuation" style="color:#999999;">(</span><span class="token punctuation" style="color:#999999;">)</span><span class="token punctuation" style="color:#999999;">;</span>

<span class="token punctuation" style="color:#999999;">}</span></span></code>
RandomEmailGenerator.java
<code class=" language-java" style="padding: 0px; line-height: 1.5; font-family: Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace; word-spacing: normal; -ms-word-break: normal; -ms-word-wrap: normal;"><span style="background-color: rgb(247, 247, 249);"><span class="token keyword" style="color:#077aa;">package</span> com<span class="token punctuation" style="color:#999999;">.</span>mkyong<span class="token punctuation" style="color:#999999;">.</span>testng<span class="token punctuation" style="color:#999999;">.</span>project<span class="token punctuation" style="color:#999999;">.</span>service<span class="token punctuation" style="color:#999999;">.</span>email<span class="token punctuation" style="color:#999999;">;</span>

<span class="token keyword" style="color:#077aa;">import</span> org<span class="token punctuation" style="color:#999999;">.</span>springframework<span class="token punctuation" style="color:#999999;">.</span>stereotype<span class="token punctuation" style="color:#999999;">.</span>Service<span class="token punctuation" style="color:#999999;">;</span>

<span class="token annotation punctuation" style="color:#999999;">@Service</span>
<span class="token keyword" style="color:#077aa;">public</span> <span class="token keyword" style="color:#077aa;">class</span> <span class="token class-name">RandomEmailGenerator</span> <span class="token keyword" style="color:#077aa;">implements</span> <span class="token class-name">EmailGenerator</span> <span class="token punctuation" style="color:#999999;">{</span>

	<span class="token annotation punctuation" style="color:#999999;">@Override</span>
	<span class="token keyword" style="color:#077aa;">public</span> String <span class="token function" style="color:#dd4a68;">generate</span><span class="token punctuation" style="color:#999999;">(</span><span class="token punctuation" style="color:#999999;">)</span> <span class="token punctuation" style="color:#999999;">{</span>
		<span class="token keyword" style="color:#077aa;">return</span> <span class="token string" style="color:#66990;">"feedback@yoursite.com"</span><span class="token punctuation" style="color:#999999;">;</span>
	<span class="token punctuation" style="color:#999999;">}</span>

<span class="token punctuation" style="color:#999999;">}</span></span></code>

3. TestNG + Spring

在测试包下创建一个测试的配置文件spring-test-config.xml,如下:

${project}/src/test/resources/spring-test-config.xml
<code class=" language-markup" style="padding: 0px; line-height: 1.5; font-family: Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace; word-spacing: normal; -ms-word-break: normal; -ms-word-wrap: normal;"><span style="background-color: rgb(247, 247, 249);"><span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"><</span>beans</span> <span class="token attr-name" style="color:#66990;">xmlns</span><span class="token attr-value" style="color:#077aa;"><span class="token punctuation" style="color:#999999;">=</span><span class="token punctuation" style="color:#999999;">"</span>http://www.springframework.org/schema/beans<span class="token punctuation" style="color:#999999;">"</span></span>
	<span class="token attr-name" style="color:#66990;"><span class="token namespace">xmlns:</span>context</span><span class="token attr-value" style="color:#077aa;"><span class="token punctuation" style="color:#999999;">=</span><span class="token punctuation" style="color:#999999;">"</span>http://www.springframework.org/schema/context<span class="token punctuation" style="color:#999999;">"</span></span>
	<span class="token attr-name" style="color:#66990;"><span class="token namespace">xmlns:</span>xsi</span><span class="token attr-value" style="color:#077aa;"><span class="token punctuation" style="color:#999999;">=</span><span class="token punctuation" style="color:#999999;">"</span>http://www.w3.org/2001/XMLSchema-instance<span class="token punctuation" style="color:#999999;">"</span></span>
	<span class="token attr-name" style="color:#66990;"><span class="token namespace">xsi:</span>schemaLocation</span><span class="token attr-value" style="color:#077aa;"><span class="token punctuation" style="color:#999999;">=</span><span class="token punctuation" style="color:#999999;">"</span>
		http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
    http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-3.2.xsd
	<span class="token punctuation" style="color:#999999;">"</span></span><span class="token punctuation" style="color:#999999;">></span></span>

	<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"><</span><span class="token namespace">context:</span>component-scan</span> <span class="token attr-name" style="color:#66990;">base-package</span><span class="token attr-value" style="color:#077aa;"><span class="token punctuation" style="color:#999999;">=</span><span class="token punctuation" style="color:#999999;">"</span>com.mkyong.testng<span class="token punctuation" style="color:#999999;">"</span></span> <span class="token punctuation" style="color:#999999;">/></span></span>

<span class="token tag" style="color:#99055;"><span class="token tag"><span class="token punctuation" style="color:#999999;"></</span>beans</span><span class="token punctuation" style="color:#999999;">></span></span></span></code>

测试用例需要继承 AbstractTestNGSpringContextTests, 如下示例 :

${project}/src/test/java/com/mkyong/testng/examples/spring/TestSpring.java
<code class=" language-java" style="padding: 0px; line-height: 1.5; font-family: Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace; word-spacing: normal; -ms-word-break: normal; -ms-word-wrap: normal;"><span style="background-color: rgb(247, 247, 249);"><span class="token keyword" style="color:#077aa;">package</span> com<span class="token punctuation" style="color:#999999;">.</span>mkyong<span class="token punctuation" style="color:#999999;">.</span>testng<span class="token punctuation" style="color:#999999;">.</span>examples<span class="token punctuation" style="color:#999999;">.</span>spring<span class="token punctuation" style="color:#999999;">;</span>

<span class="token keyword" style="color:#077aa;">import</span> org<span class="token punctuation" style="color:#999999;">.</span>springframework<span class="token punctuation" style="color:#999999;">.</span>beans<span class="token punctuation" style="color:#999999;">.</span>factory<span class="token punctuation" style="color:#999999;">.</span>annotation<span class="token punctuation" style="color:#999999;">.</span>Autowired<span class="token punctuation" style="color:#999999;">;</span>
<span class="token keyword" style="color:#077aa;">import</span> org<span class="token punctuation" style="color:#999999;">.</span>springframework<span class="token punctuation" style="color:#999999;">.</span>test<span class="token punctuation" style="color:#999999;">.</span>context<span class="token punctuation" style="color:#999999;">.</span>ContextConfiguration<span class="token punctuation" style="color:#999999;">;</span>
<span class="token keyword" style="color:#077aa;">import</span> org<span class="token punctuation" style="color:#999999;">.</span>springframework<span class="token punctuation" style="color:#999999;">.</span>test<span class="token punctuation" style="color:#999999;">.</span>context<span class="token punctuation" style="color:#999999;">.</span>testng<span class="token punctuation" style="color:#999999;">.</span>AbstractTestNGSpringContextTests<span class="token punctuation" style="color:#999999;">;</span>
<span class="token keyword" style="color:#077aa;">import</span> org<span class="token punctuation" style="color:#999999;">.</span>testng<span class="token punctuation" style="color:#999999;">.</span>Assert<span class="token punctuation" style="color:#999999;">;</span>
<span class="token keyword" style="color:#077aa;">import</span> org<span class="token punctuation" style="color:#999999;">.</span>testng<span class="token punctuation" style="color:#999999;">.</span>annotations<span class="token punctuation" style="color:#999999;">.</span>Test<span class="token punctuation" style="color:#999999;">;</span>
<span class="token keyword" style="color:#077aa;">import</span> com<span class="token punctuation" style="color:#999999;">.</span>mkyong<span class="token punctuation" style="color:#999999;">.</span>testng<span class="token punctuation" style="color:#999999;">.</span>project<span class="token punctuation" style="color:#999999;">.</span>service<span class="token punctuation" style="color:#999999;">.</span>email<span class="token punctuation" style="color:#999999;">.</span>EmailGenerator<span class="token punctuation" style="color:#999999;">;</span>

<span class="token annotation punctuation" style="color:#999999;">@Test</span>
<span class="token annotation punctuation" style="color:#999999;">@ContextConfiguration</span><span class="token punctuation" style="color:#999999;">(</span>locations <span class="token operator" style="color:#a67f59;">=</span> <span class="token punctuation" style="color:#999999;">{</span> <span class="token string" style="color:#66990;">"classpath:spring-test-config.xml"</span> <span class="token punctuation" style="color:#999999;">}</span><span class="token punctuation" style="color:#999999;">)</span>
<span class="token keyword" style="color:#077aa;">public</span> <span class="token keyword" style="color:#077aa;">class</span> <span class="token class-name">TestSpring</span> <span class="token keyword" style="color:#077aa;">extends</span> <span class="token class-name">AbstractTestNGSpringContextTests</span> <span class="token punctuation" style="color:#999999;">{</span>

	<span class="token annotation punctuation" style="color:#999999;">@Autowired</span>
	EmailGenerator emailGenerator<span class="token punctuation" style="color:#999999;">;</span>

	<span class="token annotation punctuation" style="color:#999999;">@Test</span><span class="token punctuation" style="color:#999999;">(</span><span class="token punctuation" style="color:#999999;">)</span>
	<span class="token keyword" style="color:#077aa;">void</span> <span class="token function" style="color:#dd4a68;">testEmailGenerator</span><span class="token punctuation" style="color:#999999;">(</span><span class="token punctuation" style="color:#999999;">)</span> <span class="token punctuation" style="color:#999999;">{</span>

		String email <span class="token operator" style="color:#a67f59;">=</span> emailGenerator<span class="token punctuation" style="color:#999999;">.</span><span class="token function" style="color:#dd4a68;">generate</span><span class="token punctuation" style="color:#999999;">(</span><span class="token punctuation" style="color:#999999;">)</span><span class="token punctuation" style="color:#999999;">;</span>
		System<span class="token punctuation" style="color:#999999;">.</span>out<span class="token punctuation" style="color:#999999;">.</span><span class="token function" style="color:#dd4a68;">println</span><span class="token punctuation" style="color:#999999;">(</span>email<span class="token punctuation" style="color:#999999;">)</span><span class="token punctuation" style="color:#999999;">;</span>

		Assert<span class="token punctuation" style="color:#999999;">.</span><span class="token function" style="color:#dd4a68;">assertNotNull</span><span class="token punctuation" style="color:#999999;">(</span>email<span class="token punctuation" style="color:#999999;">)</span><span class="token punctuation" style="color:#999999;">;</span>
		Assert<span class="token punctuation" style="color:#999999;">.</span><span class="token function" style="color:#dd4a68;">assertEquals</span><span class="token punctuation" style="color:#999999;">(</span>email<span class="token punctuation" style="color:#999999;">,</span> <span class="token string" style="color:#66990;">"feedback@yoursite.com"</span><span class="token punctuation" style="color:#999999;">)</span><span class="token punctuation" style="color:#999999;">;</span>


	<span class="token punctuation" style="color:#999999;">}</span>

<span class="token punctuation" style="color:#999999;">}</span></span></code>

输出:

<code class=" language-bash" style="padding: 0px; line-height: 1.5; font-family: Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace; word-spacing: normal; -ms-word-break: normal; -ms-word-wrap: normal;"><span style="background-color: rgb(247, 247, 249);">feedback@yoursite.com
PASSED: testEmailGenerator

<span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">=</span>
    Default <span class="token function" style="color:#dd4a68;">test</span>
    Tests run: 1, Failures: 0, Skips: 0
<span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">==</span><span class="token operator" style="color:#a67f59;">=</span></span></code>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值