java junit单元测试例子怎么写

JUnit单元测试(四)--JUnit运行测试套件
JUnit单元测试(四)--JUnit运行测试套件
前面几篇我们讲的是单个单个程序测试,这种方式在测试类比较少的时候可行的,但是如果测试类多了,单个单个的这个测试方式效率就不尽如人意了,也不推荐,那得使用运行测试套件,对整个测试类进行执行测试。
一个TestSuite是一个复合的测试。它运行测试用例集。
这个测试程序就是把一个包的全部测试程序一起测试,而不用单个单个进行测试:
代码如下:
package com.junit3_8;&&&
import junit.framework.T&&&
import junit.framework.TestC&&&
import junit.framework.TestS&&&
&* 一个TestSuite是一个复合的测试。它运行测试用例集。&
public class TestAll extends TestCase{&&&
&&& //记住该方法是静态的,有返回值&&&&&
&&& public static Test suite ()&&&
&&&&&& TestSuite ts = new TestSuite();&&&&&&&&&&&& //实例化一个TestSuite对象&&
&&&&&&& ts.addTestSuite(CalculatorTest.class);&&&&& //这样表示加载之前写的CalculatorTest这个测试类中所有的测试方法&&&&&&&
&&&&&&&&&&
package com.junit3_8;&
import junit.framework.T&
import junit.framework.TestC&
import junit.framework.TestS&
&* 一个TestSuite是一个复合的测试。它运行测试用例集。
public class TestAll extends TestCase{&
&&& //记住该方法是静态的,有返回值&&
&&& public static Test suite ()&
&&&&&& TestSuite ts = new TestSuite();&&&&&&&&&&&& //实例化一个TestSuite对象
&&&&&&& ts.addTestSuite(CalculatorTest.class);&&&&& //这样表示加载之前写的CalculatorTest这个测试类中所有的测试方法&&&&
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'mushiqianmeng 的BLOG
用户名:mushiqianmeng
文章数:63
评论数:352
访问量:705400
注册日期:
阅读量:24883
阅读量:257252
阅读量:995830
阅读量:148160
51CTO推荐博文
& 本文出自博客,转载请务必注明出处:&
写过Junit单元测试的同学应该会有感觉,Junit本身是不支持普通的多线程测试的,这是因为Junit的底层实现上,是用System.exit退出用例执行的。JVM都终止了,在测试线程启动的其他线程自然也无法执行。JunitCore代码如下:
&&&&&&&&&&&public&static&void&main(String...&args)&{&&&&&&&&&runMainAndExit(new&RealSystem(),&args);&&&&&}&&&&&&&&&&&&&&public&static&void&runMainAndExit(JUnitSystem&system,&String...&args)&{&&&&&&&&&Result&result=&new&JUnitCore().runMain(system,&args);&&&&&&&&&system.exit(result.wasSuccessful()&?&0&:&1);&&&&&}&
RealSystem.java:
public&void&exit(int&code)&{&&&&&&&&&&System.exit(code);&&&&&&}&
所以要想编写多线程Junit测试用例,就必须让主线程等待所有子线程执行完成后再退出。想到的办法自然是Thread中的join方法。话又说回来,这样一个简单而又典型的需求,难道会没有第三方的包支持么?通过google,笔者很快就找到了GroboUtils这个Junit多线程测试的开源的第三方的工具包。
&GroboUtils官网如下:
下载页面:
Maven依赖方式:
&dependency&&&&&&&&&groupId&net.sourceforge.groboutils&/groupId&&&&&&&&&artifactId&groboutils-core&/artifactId&&&&&&&&&version&5&/version&&&&&&&/dependency&&
注:需要第三方库支持:
依赖好Jar包后就可以编写多线程测试用例了。上手很简单:
&&&&&&&&&&&@Test&&&&&public&void&MultiRequestsTest()&{&&&&&&&&&&&&&&&&&&&&&&&&&&TestRunnable&runner&=&new&TestRunnable()&{&&&&&&&&&&&&&@Override&&&&&&&&&&&&&public&void&runTest()&throws&Throwable&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&};&&&&&&&&&int&runnerCount&=&100;&&&&&&&&&&&&&&&&&&&&&&&&&&TestRunnable[]&trs&=&new&TestRunnable[runnerCount];&&&&&&&&&for&(int&i&=&0;&i&&&runnerC&i++)&{&&&&&&&&&&&&&trs[i]&=&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&&&MultiThreadedTestRunner&mttr&=&new&MultiThreadedTestRunner(trs);&&&&&&&&&try&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&mttr.runTestRunnables();&&&&&&&&&}&catch&(Throwable&e)&{&&&&&&&&&&&&&e.printStackTrace();&&&&&&&&&}&&&&&}&
执行一下,看看效果。怎么样,你的Junit也可以执行多线程测试用例了吧:)。
本文出自博客,转载请务必注明出处:&
&本文出自 “” 博客,转载请与作者联系!
了这篇文章
类别:┆阅读(0)┆评论(0)<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&

我要回帖

更多关于 junit单元测试怎么写 的文章

 

随机推荐