本站首页    管理页面    写新日志    退出


«November 2025»
1
2345678
9101112131415
16171819202122
23242526272829
30


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7650428
建立时间:2006年5月29日




[集成测试]使用GroboUtils进行多线程测试
软件技术

lhwork 发表于 2006/11/20 9:50:17

被测试的类: Buffer.javapackage test;import java.util.HashMap;import java.util.Map;/** *  * @author sting */public class Buffer {    private static Buffer me = new Buffer();        public static Buffer getInstance() {        return me;    }        private Map<String, Integer> buff;        private Buffer() {        this.buff = new HashMap<String, Integer>();    }        public void put(String key, int value) {            if (!(this.buff.containsKey(key))) {                this.buff.put(key, value);        }    }        public int get(String key) {            if (this.buff.containsKey(key)) {                return this.buff.get(key);            }            return 0;    }}TestCase: BufferTest.javapackage test;import net.sourceforge.groboutils.junit.v1.MultiThreadedTestRunner;import net.sourceforge.groboutils.junit.v1.TestRunnable;import junit.framework.TestCase;/** *  * @author sting */public class BufferTest extends TestCase {    private Buffer buff;        protected void setUp() throws Exception {        super.setUp();        buff = Buffer.getInstance();    }    protected void tearDown() throws Exception {        super.tearDown();    }    public void test() throws Throwable {        TestRunnable[] runnables = new TestRunnable[] {                new WriteToBuffer(buff, 10),                new GetFromBuffer(buff, 10)        };                MultiThreadedTestRunner testRunner =                 new MultiThreadedTestRunner(runnables);        testRunner.runTestRunnables();    }        private static class WriteToBuffer extends TestRunnable {        private int value;        private Buffer buff;                public WriteToBuffer(Buffer buff, int value) {            this.buff = buff;            this.value = value;        }                @Override        public void runTest() throws Throwable {            buff.put("sting", value);        }    }        private static class GetFromBuffer extends TestRunnable {        private int value;        private Buffer buff;                public GetFromBuffer(Buffer buff, int value) {            this.buff = buff;            this.value = value;        }                @Override        public void runTest() throws Throwable {            assertEquals(value, buff.get("sting"));        }    }}运行该test case,结果如下:WARN [Thread-1] (MultiThreadedTestRunner.java:276) - A test thread caused an exception.junit.framework.AssertionFailedError: expected:<10> but was:<0>    at junit.framework.Assert.fail(Assert.java:47)    at junit.framework.Assert.failNotEquals(Assert.java:282)    at junit.framework.Assert.assertEquals(Assert.java:64)    at junit.framework.Assert.assertEquals(Assert.java:201)    at junit.framework.Assert.assertEquals(Assert.java:207)    at test.BufferTest$GetFromBuffer.runTest(BufferTest.java:75)    at net.sourceforge.groboutils.junit.v1.TestRunnable.run(TestRunnable.java:154)    at java.lang.Thread.run(Unknown Source)把Buffer.java加上同步处理:public class Buffer {    private static Buffer me = new Buffer();        public static Buffer getInstance() {        return me;    }        private Map<String, Integer> buff;        private Buffer() {        this.buff = new HashMap<String, Integer>();    }        public void put(String key, int value) {        synchronized (this) {            if (!(this.buff.containsKey(key))) {                this.buff.put(key, value);            }        }    }        public int get(String key) {        synchronized (this) {            if (this.buff.containsKey(key)) {                return this.buff.get(key);            }            return 0;        }    }}测试通过。这里只是用最简单的code演示了一下如何使用GroboUtils里面提供TestRunnable和MultiThreadedTestRunner来编写多线程的测试代码。其实也可以自己写code去测试,不过已经有人写了,不用再重复去做了。Please refer to http://broboutils.sourceforge.net to get more information.


阅读全文(3231) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.063 second(s), page refreshed 144800889 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号