﻿<?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--随笔分类-测试</title><link>http://www.blogjava.net/leekiang/category/35372.html</link><description>MDA/MDD/TDD/DDD/DDDDDDD</description><language>zh-cn</language><lastBuildDate>Tue, 02 Aug 2011 11:18:28 GMT</lastBuildDate><pubDate>Tue, 02 Aug 2011 11:18:28 GMT</pubDate><ttl>60</ttl><item><title>单元测试</title><link>http://www.blogjava.net/leekiang/archive/2011/07/02/353556.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Sat, 02 Jul 2011 09:38:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2011/07/02/353556.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/353556.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2011/07/02/353556.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/353556.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/353556.html</trackback:ping><description><![CDATA[Cactus is a simple test framework for unit testing server-side java
        code (Servlets, EJBs, Tag Libs, Filters, ...).<br />JspTest<br />ServletRunner<br /><br /><br /><a target="_blank" href="http://blog.csdn.net/rmartin/article/details/1618872">容器外的JSP页面测试技术</a><br />http://home.so-net.net.tw/idealist/Test/cactus.html<br /><img src ="http://www.blogjava.net/leekiang/aggbug/353556.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2011-07-02 17:38 <a href="http://www.blogjava.net/leekiang/archive/2011/07/02/353556.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ab性能测试</title><link>http://www.blogjava.net/leekiang/archive/2011/04/03/347577.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Sat, 02 Apr 2011 18:07:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2011/04/03/347577.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/347577.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2011/04/03/347577.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/347577.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/347577.html</trackback:ping><description><![CDATA[ab -n 10000 -c 10  127.0.0.1/<br />-n总请求次数，-c并发数，-t时间(秒)<br />注意：url后面一定要带斜杠<br /><br />url最好用引号引起来：<br />ab -n 1000 -c 1000 'http://192.168.16.203/XGateway/XService.svc/GetData?dd=XXX&amp;bb=XXXXXX&amp;cc=ttttt'<br />如果不加引号，则默认只传一个参数，curl也是如此<br /><br /><a target="_blank" href="http://swordinhand.iteye.com/blog/1133107">用ab测试nginx集群遇到的问题</a><br /><a target="_blank" href="http://www.cnblogs.com/netflu/archive/2010/01/07/1641101.html">使用Apache ab进行压力测试(参数说明)</a><br /><img src ="http://www.blogjava.net/leekiang/aggbug/347577.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2011-04-03 02:07 <a href="http://www.blogjava.net/leekiang/archive/2011/04/03/347577.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AB测试</title><link>http://www.blogjava.net/leekiang/archive/2010/10/14/335113.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Thu, 14 Oct 2010 04:49:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2010/10/14/335113.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/335113.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2010/10/14/335113.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/335113.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/335113.html</trackback:ping><description><![CDATA[有两种含义:<br />1，开源性能测试ApacheBench<br />   http://jackei.cnblogs.com/archive/2006/07/18/454144.html<br />2，互联网营销人员的优化手段<br /><img src ="http://www.blogjava.net/leekiang/aggbug/335113.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2010-10-14 12:49 <a href="http://www.blogjava.net/leekiang/archive/2010/10/14/335113.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jmeter笔记</title><link>http://www.blogjava.net/leekiang/archive/2010/05/27/322074.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Thu, 27 May 2010 10:37:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2010/05/27/322074.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/322074.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2010/05/27/322074.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/322074.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/322074.html</trackback:ping><description><![CDATA[基本步骤:<br />1,在测试计划上右键添加线程组,然后在线程组面板里有几个输入栏：线程数、Ramp-Up Period(in seconds)、循环次数，其中Ramp-Up Period(in 
seconds)表示在这时间内创建完所有的线程。如有8个线程，Ramp-Up = 200秒，那么线程的启动时间间隔为200/8=25秒<br />2,在线程组里添加--&gt;取样器(sampler)-&gt;http请求，注意路径不包括服务器地址<br />3,添加监听器，可以用“用表格查看结果”或第2个“图形结果”等,"查看结果树"可以让你查看每个sampler的请求数据和响应数据<br /><br />tips:<br />1,使用HTTP Cookie Manager或URL重写实现同一线程内的多个请求共享Session<br />2,把Login的请求放到只执行一次的控制器中，那么即使循环多次，Login也只请求一次<br />3,为了节省系统资源，使用非窗口模式运行JMeter（jmeter -n -t test.jmx）
<br />4,如果模拟并发用户过多，比如200线程，那么可以分散到多台机器上运行Jmeter（比如4台电脑，每台50线程）
<br />5,可以用badboy工具录制.jmx脚本<br /><br />参考:<br />http://www.51testing.com/?128005/action_viewspace_itemid_69407.html<br />http://www.ibm.com/developerworks/cn/opensource/os-pressiontest/<br />http://blog.chenlb.com/2009/03/jmeter-quick-start.html<br />http://rdc.taobao.com/blog/qa/?p=2287<br />http://qa.taobao.com/?p=6216<br />http://www.blogjava.net/BlueDavy/archive/2008/07/25/217514.html<br /><img src ="http://www.blogjava.net/leekiang/aggbug/322074.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2010-05-27 18:37 <a href="http://www.blogjava.net/leekiang/archive/2010/05/27/322074.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库测试工具,dbunit等</title><link>http://www.blogjava.net/leekiang/archive/2010/05/23/321672.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Sun, 23 May 2010 11:35:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2010/05/23/321672.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/321672.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2010/05/23/321672.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/321672.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/321672.html</trackback:ping><description><![CDATA[public class UsersTest extends AbstractTransactionalDataSourceSpringContextTests {<br />    private IDatabaseTester databaseTester;<br /><br />    @Override<br />    protected void onSetUp() throws Exception {<br />        databaseTester = new JdbcDatabaseTester("oracle.jdbc.driver.OracleDriver",<br />                "jdbc:oracle:thin:@localhost:1521:orcl", "test", "test");<br />        IDataSet dataSet = getDataSet();<br />        databaseTester.setDataSet(dataSet);<br />        databaseTester.onSetup();<br />    }<br /><br />    @Override<br />    protected void onTearDown() throws Exception {<br />        databaseTester.onTearDown();<br />    }<br /><br />    protected IDataSet getDataSet() throws Exception {<br />        String path = "users.xml";<br />        InputStream in = this.getClass().getResourceAsStream(path);<br />        return new FlatXmlDataSetBuilder().build(in);<br />    }<br />}<br /><br />Unitils是一个简化测试开发，提高测试维护性的一个工具集<br />Dbdeploy是Thoughtworks公司开发的数据库工具，获得Jolt大奖<br /><img src ="http://www.blogjava.net/leekiang/aggbug/321672.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2010-05-23 19:35 <a href="http://www.blogjava.net/leekiang/archive/2010/05/23/321672.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>测试管理</title><link>http://www.blogjava.net/leekiang/archive/2010/04/17/318616.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Sat, 17 Apr 2010 13:45:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2010/04/17/318616.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/318616.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2010/04/17/318616.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/318616.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/318616.html</trackback:ping><description><![CDATA[工具:testlink<img src ="http://www.blogjava.net/leekiang/aggbug/318616.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2010-04-17 21:45 <a href="http://www.blogjava.net/leekiang/archive/2010/04/17/318616.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>代码review</title><link>http://www.blogjava.net/leekiang/archive/2010/03/09/314893.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Mon, 08 Mar 2010 16:22:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2010/03/09/314893.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/314893.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2010/03/09/314893.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/314893.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/314893.html</trackback:ping><description><![CDATA[1,findbugs的eclipse插件<br />把解压后的目录edu.umd.cs.findbugs.plugin.eclipse_1.3.9.20090821剪切到findbugs\eclipse\plugins目录下，再以links的方式安装.<br />  装好后再Java项目上右键，可以看到“Find Bugs”菜单项，子菜单项里有“Find Bugs”和“Clear Bug Markers”<br />  在首选项-&gt;java-&gt;findbugs里可以进行配置<br />  参考：http://lansky07.javaeye.com/blog/283923<br />        http://www.cnblogs.com/hyddd/archive/2009/02/13/1390362.html<br /><br />2,eclemma<br /><a href="http://www.ibm.com/developerworks/cn/java/j-lo-eclemma/">使用 EclEmma 进行覆盖测试</a><br /> <br /><a href="http://www.ibm.com/developerworks/cn/java/j-cq01316/index.html">追求代码质量: 不要被覆盖报告所迷惑</a><br /><br />3,<br /><a href="http://coolshell.cn/?p=1218">简单实用的Code Review工具</a><br /><a href="http://bbs.scmroad.com/viewthread.php?tid=2913">Review Board </a><br /><br />4,<br /><a href="http://java.csdn.net/a/20100308/259219.html">敏捷开发中编写高质量Java代码</a><br /><br />5,<a style="" href="http://www.maintainj.com/" target="_blank">MaintainJ</a>是一个Java应用程序维护工具。MaintainJ在运行时能生成UML序列和类图。<br /><br />6,gerrit
    <span class="source_att MIB_linkbl"><a href="http://weibo.com/1930517775/eCMgySvbGVs"><strong lang="CL1005"></strong></a></span><img src ="http://www.blogjava.net/leekiang/aggbug/314893.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2010-03-09 00:22 <a href="http://www.blogjava.net/leekiang/archive/2010/03/09/314893.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于mock</title><link>http://www.blogjava.net/leekiang/archive/2010/02/14/313004.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Sun, 14 Feb 2010 13:20:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2010/02/14/313004.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/313004.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2010/02/14/313004.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/313004.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/313004.html</trackback:ping><description><![CDATA[
		<br />至于easymock之外的选择，我个人比较喜欢和推崇jmockit，mocito虽然也不错不过有了jmockit我就pass掉mockito了。<br />只是每次看到项目代码中，<a target="_blank" href="http://www.iteye.com/topic/834528">用easymock有record，replay却不调用verify时，就觉得郁闷</a>。这样的testcase，就算通过了，又能说明什么？
      <br /><br />Mock通常很少考虑复用，每个mock对象通过都是遵循"just enough"原则，一般只适用于当前测试方法。因此每个测试方法都必须实现自己的mock逻辑，当然在同一个测试类中还是可以有一些简单的初始化逻辑可以复用。
<br />
stub则通常比较方便复用，尤其是一些通用的stub，比如jdbc连接之类。spring框架就为此提供了大量的stub来方便测试，不过很遗憾的是，它的名字用错了：spring-mock<br />mock和stub的最重要的区别：expectiation/期望。
对于mock来说，expectiation是重中之重：我们期待方法有没有被调用，期待适当的参数，期待调用的次数，甚至期待多个mock之间的调用顺序。所有的一切期待都是事先准备好，在测试过程中和测试结束后验证是否和预期的一致。
<br />
而对于stub，通常都不会关注expectiation<br /><br /><br /><a target="_blank" href="http://www.iteye.com/topic/747876">easymock教程-mock和stub</a><br />http://www.javaeye.com/topic/21630<br /><a target="_blank" href="http://hi.baidu.com/obullxl/blog/item/645bf5c4f17f8fa48226acef.html">单元测试框架JMock与Mockito的用法比较</a><br />http://javasee.iteye.com/blog/1000868<br />http://hyjun.iteye.com/blog/337206<br /><a target="_blank" href="http://blog.csdn.net/lu7kang/archive/2011/03/31/6292924.aspx">单元测试mock：用JMockit写单元测试实例</a><br />http://gojko.net/2009/10/23/mockito-in-six-easy-examples/<br /><img src ="http://www.blogjava.net/leekiang/aggbug/313004.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2010-02-14 21:20 <a href="http://www.blogjava.net/leekiang/archive/2010/02/14/313004.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自动化测试</title><link>http://www.blogjava.net/leekiang/archive/2009/05/23/277585.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Sat, 23 May 2009 11:05:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2009/05/23/277585.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/277585.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2009/05/23/277585.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/277585.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/277585.html</trackback:ping><description><![CDATA[watiR<br />http://www.51testing.com/html/11/n-11611.html<br />http://www.51testing.com/html/57/1872.html<br /><a target="_blank" href="http://www.infoq.com/cn/articles/refactoring-test-scripts"><br /><br />使用iTest2重构自动化功能测试脚本</a><br />众所周知，自动测试脚本很难维护。随着敏捷方法学在企业软件项目中的广泛应用，其核心实践之一——自动化功能测试已经证明了它的价值，同时却也对项目提出
了挑战。传统的“录制－回播”类型的测试工具也许能帮助测试人员很快地创建一系列的测试脚本，但这些测试代码最后却很难维护。原因就是：应用程序在不断变化。<br /><a href="http://itest2.com/">Test2 IDE</a>是一款新的功能测试工具，专为测试人员设计，让他们能够很轻松地开发和维护自动测试脚本。iTest2完全致力于web测试的自动化，它支持的测试框架是使用RSpec语法的rWebUnit（是广为流行的Watir的一款开源插件）。iTest2背后的哲学是：容易、简单。试用显示：没有编程经验的测试人员在指导下，平均只需要少于10分钟的时间就能编写他们第一个自动化测试脚
本。借助于iTest2，测试人员可以开发、维护和验证功能需求的测试脚本；开发人员可以验证特性可用；业务分析师/客户通过查看测试运行结果（在真实的
浏览器下，比如IE或者Firefox）来验证功能需求。由iTest2创建的测试脚本可以从命令行运行，也能集成在持续构建服务器上。<br /><br />感觉selenium不如watiJ好用，为什么要单启一个服务器呢<br />selenium和WebDriver有何关系<br /><img src ="http://www.blogjava.net/leekiang/aggbug/277585.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2009-05-23 19:05 <a href="http://www.blogjava.net/leekiang/archive/2009/05/23/277585.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring2.5与junit整合的笔记</title><link>http://www.blogjava.net/leekiang/archive/2009/01/04/249776.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Sun, 04 Jan 2009 10:13:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2009/01/04/249776.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/249776.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2009/01/04/249776.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/249776.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/249776.html</trackback:ping><description><![CDATA[1,为了尽量平稳过渡，继续用junit3.8,而不是直接使用junit4<br />2,@ContextConfiguration(locations = { "classpath:applicationContext-sys.xml",<br />        "classpath:applicationContext.xml" })<br />public class BaseTests extends AbstractTransactionalJUnit38SpringContextTests {<br />}<br />所有的TestCase都继承上面这个类，使得spring配置文件重用，同时ApplicationContext也是同一个。<br /><br />3,要测试的service类通过@Autowired注入，例如<br />    @Autowired<br />    private UserDAO  userDAO;<br />    <br />4，注意，对于继承了BaseTests的测试类里的每一个test方法，运行测试时都会按<br />   setUp()--&gt;test方法--&gt;tearDown()的顺序执行，而且这3个组成一个事务，执行完后默认会回滚。<br />   如果不想回滚，在类名前面@TransactionConfiguration(defaultRollback = false)<br />   <br />5，因为还是用的junit3.8,故TestSuite的写法照旧<br />  public class SuiteTests {<br />    public static Test suite() {<br />        TestSuite suite = new TestSuite("运行所有测试");<br />        suite.addTestSuite(UserServiceTests.class);<br />        suite.addTestSuite(RoleServiceTests.class);<br />        return suite;<br />    }<br />}<br /><br />6，测试类并没有当作bean配置在application.xml文件中，<br />   spring测试框架是如何使"setUp()--&gt;test方法--&gt;tearDown()"处于同一个事务的呢？<br />   具体就要看AbstractTransactionalJUnit38SpringContextTests了，是通过注解实现的。<br />   service方法在test方法里面，这两个方法都配置有事务，即形成了事务的嵌套，这里有点复杂了，我还没想清楚。<br />   不过可以肯定的是，如果test方法的事务不提交，那么service方法的事务也不会提交。<br />   <br />7，如果想在jdk1.4下重用ApplicationContext，可采用以下的办法，出处再补上。这个办法与前面的进行比较，<br />   我觉得最大的区别是这种写法要手动进行测试数据的清除。<br />public class BaseTestCase extends TestCase {<br />     static ApplicationContext context = null;<br /><br />    static {<br />        // perform the "global" set up logic<br />        // 这里的代码会在类初始化时执行，所以相当于BeforeClass<br />        String[] CONFIG_FILES_MIN = { "applicationContext-sys.xml",<br />                "applicationContext.xml" };<br />        context = new ClassPathXmlApplicationContext(CONFIG_FILES_MIN);<br />        System.out.println("setup");<br /><br />        // and now register the shutdown hook for tear down logic<br />        // 将一个匿名方法写到这里，就相当于AfterClass<br />        Runtime.getRuntime().addShutdownHook(new Thread() {<br />            public void run() {<br />                System.out.println("shutdown");<br />            }<br />        });<br />    }<br /><br />    protected void setUp() throws Exception {<br />    }<br />}<br /><br />8，如果用junit-4.jar，去官网下载junit4.4.jar。不要采用myeclipse自带的junit4.jar，因为这个不带JUnit4ClassRunner类。<br />   另外不要用junit-4.5.jar,据说与spring2.5有冲突，<br />   详见Spring Test Context Framework not compatible with JUnit 4.5，http://jira.springframework.org/browse/SPR-5145<br /><br /><br />9，String htmlContent  = "&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;html content&lt;/body&gt;&lt;/html&gt;";<br />
      String plainContent = "plain content";<br /><br />
      MockMultipartHttpServletRequest req = new MockMultipartHttpServletRequest();<br />req.setContentType("multipart/form-data");<br />//req.addHeader("Content-type", "multipart/form-data");//这样写应该是一样的<br />
      req.setMethod("POST");<br />
      req.addFile( new MockMultipartFile("file","test1.html","text/html", htmlContent.getBytes( "US-ASCII" ) ) );<br />
      req.addFile( new MockMultipartFile("file","test2.html","text/html", htmlContent.getBytes( "US-ASCII" ) ) );<br />
      req.addFile( new MockMultipartFile("file","test.txt", "text/plain",plainContent.getBytes( "US-ASCII" ) ) );<br />assertTrue( ServletFileUpload.isMultipartContent( req ) );<br />int content_length = req.getContentLength();<br /><br />10，AbstractTransactionalJUnit38SpringContextTests<br />    AbstractTransactionalSpringContextTests<br />    AbstractTransactionalDataSourceSpringContextTests<br />的区别?<br /><br />11,MockHttpServletRequest的addParameter方法和setParameter的区别<br /><br /><br />参考:<br /><a href="http://www.uml.org.cn/j2ee/200905074.asp">详细讲解在Spring中进行集成测试</a><br />http://www.javaeye.com/topic/68185<br />http://www.google.cn/codesearch/p?hl=zh-CN#Vq-IOboH1tI/trunk/test/es/peerreview/service/TestPeerReviewSpring.java<br /><a href="http://www.yybean.com/junit-with-spring-framework-provided-by-the-expansion-of-the-dao-or-the-service-layer-unit-test">用Spring提供的JUnit框架扩展对DAO或Service层进行单元测试</a><br />http://code.google.com/p/anewssystem/source/browse/trunk/anewssystem/parent/core/src/main/java/anni/core/test/?r=105<br />http://docs.huihoo.com/spring/2.5.x/zh-cn/testing.html<br />http://arkxu.javaeye.com/blog/261679<br />http://www.ibm.com/developerworks/cn/java/j-cb06066.html<br />http://www.ibm.com/developerworks/cn/java/j-lo-spring25-test/<br /><a href="http://mingxinzhicheng.blog.51cto.com/15/3219">基于mock对象和JUnit框架简化Spring Web组件单元测试</a><br />http://www.blogjava.net/calvin/archive/2005/09/21/13628.html<br />http://www.yybean.com/testing-framework-to-use-spring-integration-testing<br /><br /><br /><img src ="http://www.blogjava.net/leekiang/aggbug/249776.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2009-01-04 18:13 <a href="http://www.blogjava.net/leekiang/archive/2009/01/04/249776.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>单元测试笔记</title><link>http://www.blogjava.net/leekiang/archive/2008/12/24/247991.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Tue, 23 Dec 2008 16:31:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2008/12/24/247991.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/247991.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2008/12/24/247991.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/247991.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/247991.html</trackback:ping><description><![CDATA[1，Junit测试Action<br />http://lyx.javaeye.com/blog/57037<br /><br />2，<a href="/iamtin/archive/2006/11/17/81802.html">在JUnit中多个testCase只执行一次setup</a><a href="http://space.itpub.net/14734416/viewspace-487338">和tearDown的方法</a><br /><br />3,<a href="http://sourceforge.net/projects/soapui/" target="_blank">SoapUI</a>当选最佳开源Web Services测试工具<br /><br />4,<a href="http://www.sventon.org/">通过Spring2.5对单元测试的Annotation支持进行TDD开发</a><br /><br />5,<a href="http://tempuri.org/tempuri.html">sventon</a>用于svn代码的在线浏览，其单元测试代码很规整。<br />http://svn.sventon.org/repos/berlios/show/trunk/sventon/src/test/java/org/sventon/web/ctrl/template/GetFileControllerTest.java<br /><br />6，mockito似乎比easymock好用<br /><img src ="http://www.blogjava.net/leekiang/aggbug/247991.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2008-12-24 00:31 <a href="http://www.blogjava.net/leekiang/archive/2008/12/24/247991.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>什么是TPS</title><link>http://www.blogjava.net/leekiang/archive/2008/10/21/235652.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Tue, 21 Oct 2008 05:55:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2008/10/21/235652.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/235652.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2008/10/21/235652.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/235652.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/235652.html</trackback:ping><description><![CDATA[TPS 是Transactions Per Second 的 缩 写， 也 就 是 事 务 数/ 秒。 它 是软件测试结 果 的 测 量 单
位。 一 个 事 务 是 指 一 个 客 户 机 向 服 务 器 发 送 请 求 然 后 服 务 器 做 出 反 应 的 过 程。 客 户 机
在 发 送 请 求 时 开 始 计 时， 收 到 服 务 器 响 应 后 结 束 计 时， 以 此 来 计 算 使 用 的 时 间 和 完 成
的 事 务 个 数， 最 终 利 用 这 些 信 息 来 估 计 得 分。 客 户 机 使 用 加 权 协 函 数 平 均 方 法 来 计 算
客 户 机 的得 分，测试软件就是 利 用 客 户 机 的 这 些 信 息 使 用 加 权 协 函 数 平 均 方 法 来 计 算 服 务 器
端 的 整 体TPS 得 分。
<img src ="http://www.blogjava.net/leekiang/aggbug/235652.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2008-10-21 13:55 <a href="http://www.blogjava.net/leekiang/archive/2008/10/21/235652.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>