﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-风香园-文章分类-Test</title><link>http://www.blogjava.net/wuxufeng8080/category/12508.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 18 Sep 2007 12:54:51 GMT</lastBuildDate><pubDate>Tue, 18 Sep 2007 12:54:51 GMT</pubDate><ttl>60</ttl><item><title>dbunit使用 </title><link>http://www.blogjava.net/wuxufeng8080/articles/145583.html</link><dc:creator>风人园</dc:creator><author>风人园</author><pubDate>Sun, 16 Sep 2007 12:41:00 GMT</pubDate><guid>http://www.blogjava.net/wuxufeng8080/articles/145583.html</guid><wfw:comment>http://www.blogjava.net/wuxufeng8080/comments/145583.html</wfw:comment><comments>http://www.blogjava.net/wuxufeng8080/articles/145583.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuxufeng8080/comments/commentRss/145583.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuxufeng8080/services/trackbacks/145583.html</trackback:ping><description><![CDATA[<h2>&nbsp;</h2>
<div style="margin-top: 10px; margin-left: 15px; overflow: auto">
<table width="100%">
    <tbody>
        <tr>
            <td>
            <p>使用dbunit，可以帮助我们在测试中维护数据，也可以辅助我们的测试。</p>
            <p>首先当然是下载dbunit, http://dbunit.sourceforge.net</p>
            <p>我测试用的是 MYSQL 5.0 。</p>
            <p>建立数据库： <br />
            create table test1( <br />
            id int not null auto_increment, <br />
            user_name varchar(50), <br />
            primary key(id)) engine=innodb;</p>
            <p>保存数据的xml文件： <br />
            <div class="code_title">xml 代码</div>
            <div class="code_div">
            <div class="dp-highlighter">
            <div class="bar"></div>
            <ol class="dp-xml">
                <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">dataset</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">test1</span><span>&nbsp;</span><span class="attribute">user_name</span><span>=</span><span class="attribute-value">"tom"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">test1</span><span>&nbsp;</span><span class="attribute">user_name</span><span>=</span><span class="attribute-value">"John"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">test1</span><span>&nbsp;</span><span class="attribute">user_name</span><span>=</span><span class="attribute-value">"Rose"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
                <li class="alt"><span class="tag">&lt;/</span><span class="tag-name">dataset</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
            </ol>
            </div>
            </div>
            <script>render_code();</script>
            <p>&nbsp;</p>
            <p>首先建立一个 JunitTest 的类：</p>
            <p>
            <div class="code_title">java 代码</div>
            <div class="code_div">
            <div class="dp-highlighter">
            <div class="bar"></div>
            <ol class="dp-j">
                <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;Test2&nbsp;</span><span class="keyword">extends</span><span>&nbsp;TestCase&nbsp;{ &nbsp;&nbsp;</span></span></li>
                <li class=""><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setUp()&nbsp;</span><span class="keyword">throws</span><span>&nbsp;Exception&nbsp;{ &nbsp;&nbsp;</span></span></li>
                <li class=""><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;tearDown()&nbsp;</span><span class="keyword">throws</span><span>&nbsp;Exception&nbsp;{ &nbsp;&nbsp;</span></span></li>
                <li class=""><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>} &nbsp;&nbsp;</span></li>
            </ol>
            </div>
            </div>
            <script>render_code();</script>
            <p>&nbsp;</p>
            <p>我不喜欢继承dbunit的类，所以我们在JunitTest 的类里增加这个变量：</p>
            <p>
            <div class="code_title">java 代码</div>
            <div class="code_div">
            <div class="dp-highlighter">
            <div class="bar"></div>
            <ol class="dp-j">
                <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;Test2&nbsp;</span><span class="keyword">extends</span><span>&nbsp;TestCase&nbsp;{ &nbsp;&nbsp;</span></span></li>
                <li class=""><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;IDatabaseTester&nbsp;databaseTester; &nbsp;&nbsp;</span></span></li>
                <li class=""><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setUp()&nbsp;</span><span class="keyword">throws</span><span>&nbsp;Exception&nbsp;{ &nbsp;&nbsp;</span></span></li>
                <li class=""><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;tearDown()&nbsp;</span><span class="keyword">throws</span><span>&nbsp;Exception&nbsp;{ &nbsp;&nbsp;</span></span></li>
                <li class=""><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>} &nbsp;&nbsp;</span></li>
            </ol>
            </div>
            </div>
            <script>render_code();</script>
            <p>&nbsp;</p>
            <p>然后，我们可以该写 setUp() 方法了，无非就是连接数据库，把数据倒入到表里。</p>
            <p>
            <div class="code_title">java 代码</div>
            <div class="code_div">
            <div class="dp-highlighter">
            <div class="bar"></div>
            <ol class="dp-j">
                <li class="alt"><span><span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setUp()&nbsp;</span><span class="keyword">throws</span><span>&nbsp;Exception&nbsp;{ &nbsp;&nbsp;</span></span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;databaseTester&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;JdbcDatabaseTester(</span><span class="string">"com.mysql.jdbc.Driver"</span><span>, &nbsp;&nbsp;</span></span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">"jdbc:mysql://127.0.0.1:3306/test"</span><span>,&nbsp;</span><span class="string">"root"</span><span>,&nbsp;</span><span class="string">"123"</span><span>); &nbsp;&nbsp;</span></span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;IDataSet&nbsp;dataSet&nbsp;=&nbsp;getDataSet(); &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;databaseTester.setDataSet(&nbsp;dataSet&nbsp;); &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;databaseTester.onSetup(); &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span>} &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span class="keyword">protected</span><span>&nbsp;IDataSet&nbsp;getDataSet()&nbsp;</span><span class="keyword">throws</span><span>&nbsp;Exception &nbsp;&nbsp;</span></span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="keyword">new</span><span>&nbsp;FlatXmlDataSet(</span><span class="keyword">new</span><span>&nbsp;FileInputStream(</span><span class="keyword">new</span><span>&nbsp;File(</span><span class="string">"dataset.xml"</span><span>))); &nbsp;&nbsp;</span></span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
            </ol>
            </div>
            </div>
            <script>render_code();</script>
            <p>&nbsp;</p>
            <p>然后是 tearDown 方法 <br />
            <div class="code_title">java 代码</div>
            <div class="code_div">
            <div class="dp-highlighter">
            <div class="bar"></div>
            <ol class="dp-j">
                <li class="alt"><span><span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;tearDown()&nbsp;</span><span class="keyword">throws</span><span>&nbsp;Exception &nbsp;&nbsp;</span></span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;databaseTester.setTearDownOperation(DatabaseOperation.DELETE_ALL); &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;databaseTester.onTearDown(); &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
            </ol>
            </div>
            </div>
            <script>render_code();</script>
            <p>&nbsp;</p>
            <p>好了，准备工作完成了，下面开始写测试方法。</p>
            <p>
            <div class="code_title">java 代码</div>
            <div class="code_div">
            <div class="dp-highlighter">
            <div class="bar"></div>
            <ol class="dp-j">
                <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;test1()&nbsp;</span><span class="keyword">throws</span><span>&nbsp;Exception{ &nbsp;&nbsp;</span></span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;ITable&nbsp;test1Table&nbsp;=&nbsp;databaseTester.getDataSet().getTable(</span><span class="string">"test1"</span><span>); &nbsp;&nbsp;</span></span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;assertEquals(test1Table.getRowCount(),&nbsp;</span><span class="number">3</span><span>); &nbsp;&nbsp;</span></span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>} &nbsp;&nbsp;</span></li>
            </ol>
            </div>
            </div>
            <script>render_code();</script><br />
            这个方法就是测试 test1 表有多少条记录
            <p>&nbsp;</p>
            <p>
            <div class="code_title">java 代码</div>
            <div class="code_div">
            <div class="dp-highlighter">
            <div class="bar"></div>
            <ol class="dp-j">
                <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;test2()&nbsp;</span><span class="keyword">throws</span><span>&nbsp;Exception{ &nbsp;&nbsp;</span></span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;ITable&nbsp;test1Table&nbsp;=&nbsp;databaseTester.getConnection().createQueryTable(</span><span class="string">"any_name"</span><span>, &nbsp;&nbsp;</span></span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">"select&nbsp;user_name&nbsp;from&nbsp;test1&nbsp;where&nbsp;user_name='tom'"</span><span>); &nbsp;&nbsp;</span></span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;assertTrue(test1Table.getRowCount()==</span><span class="number">1</span><span>); &nbsp;&nbsp;</span></span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>} &nbsp;&nbsp;</span></li>
            </ol>
            </div>
            </div>
            <script>render_code();</script><br />
            这个方法测试是否有 user_name='tom' 这个记录.
            <p>&nbsp;</p>
            <p>那么自动增加字段怎么办呢？ <br />
            只要在 tearDown 里增加 <br />
            <div class="code_title">java 代码</div>
            <div class="code_div">
            <div class="dp-highlighter">
            <ol class="dp-j">
                <li class="alt"><span><span>databaseTester.setTearDownOperation(DatabaseOperation.TRUNCATE_TABLE); &nbsp;&nbsp;</span></span></li>
            </ol>
            </div>
            </div>
            <script>render_code();</script><br />
            就可以了！</td>
        </tr>
    </tbody>
</table>
</div>
<img src ="http://www.blogjava.net/wuxufeng8080/aggbug/145583.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuxufeng8080/" target="_blank">风人园</a> 2007-09-16 20:41 <a href="http://www.blogjava.net/wuxufeng8080/articles/145583.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>多线程UT(p-unit)(zt)</title><link>http://www.blogjava.net/wuxufeng8080/articles/135793.html</link><dc:creator>风人园</dc:creator><author>风人园</author><pubDate>Fri, 10 Aug 2007 05:30:00 GMT</pubDate><guid>http://www.blogjava.net/wuxufeng8080/articles/135793.html</guid><description><![CDATA[至少我有过，不仅仅是喝咖啡，甚至是吃中饭，睡午觉，等待JUnit运行结果，以前总是抱怨机器太慢，现在，似乎情况有些变化，看下面的一个例子，有2个测试案例类[1]，每个类4个方法，每个方法休息5秒钟，那么做一个简单的算术题，需要多长时间?<br><br>2*4*5=40秒，完全正确，你可以去倒一杯水，然后回来看结果了！<br>我机器上JUnit的运行结果为:<br>Run as -&gt; JUnit - <span style="COLOR: rgb(255,0,0)">40268ms </span><br><br>会有其他不同结果吗？p-unit给你答案，下面这段代码是运行p-unit的main函数:<br>public static void main(String[] args) {<br>&nbsp; SoloRunner runner = new SoloRunner();<br>&nbsp; runner.setExecutorPool(new ExecutorPoolImpl(2));<br>&nbsp; runner.run(LongTimeExecutionPUnitTestSuite.class);<br>}<br><br>答案是什么?<br>[solo] Started running samples.LongTimeExecutionPUnitTestSuite<br>TestSuite: samples.LongTimeExecutionPUnitTestSuite<br>samples.LongTimeExecutionTest1<br>samples.LongTimeExecutionTest2<br>test1() - [5021.0ms]<br>test1() - [5021.0ms]<br>test2() - [5003.0ms]<br>test2() - [5022.0ms]<br>testA() - [5020.0ms]<br>testA() - [5000.0ms]<br>testB() - [5001.0ms]<br>testB() - [5033.0ms]<br><span style="COLOR: rgb(255,102,0)">total: 8, failures:0 (GREEN) - 20360.0ms<br><br></span>每个方法还是休息了5秒钟， 结果是20秒，不是40秒。<br><br>下载<a href="https://sourceforge.net/project/showfiles.php?group_id=195736&amp;package_id=232587&amp;release_id=509772"><u><font color=#0000ff> p-unit-0.10 0.10 release</font></u></a>！<br>p-unit 主页: <a href="http://p-unit.sourceforge.net/"><u><font color=#800080>http://p-unit.sourceforge.net</font></u></a> <br><br>[1] 测试案例类<br>LongTimeExecutionTest1.java/LongTimeExecution2.java:<br>public class LongTimeExecutionTest1(2) extends TestCase {<br>public void test1() throws Exception {<br>Thread.sleep(5000);<br>}<br><br>public void test2() throws Exception {<br>Thread.sleep(5000);<br>}<br><br>public void testA() throws Exception {<br>Thread.sleep(5000);<br>}<br><br>public void testB() throws Exception {<br>Thread.sleep(5000);<br>}<br><br>}&nbsp;
<img src ="http://www.blogjava.net/wuxufeng8080/aggbug/135793.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuxufeng8080/" target="_blank">风人园</a> 2007-08-10 13:30 <a href="http://www.blogjava.net/wuxufeng8080/articles/135793.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>