以下是JUnit扩展-
- Cactus
- JWebUnit
- XMLUnit
Cactus
Cactus是用于对服务器端Java代码(Servlet,EJB,Tag Lib,Filters)进行单元测试的简单测试框架。Cactus的目的是降低编写服务器端代码测试的成本。它使用JUnit并将其扩展。
由几个部分组成-
Cactus Framework 是Cactus 的核心,它是提供用于编写Cactus测试的API的引擎。
Cactus Integration Modules 是提供使用Cactus Framework的简便方法的前端和框架。
以下代码演示了如何使用Cactus。
import org.apache.cactus.*;
import junit.framework.*;
public class TestSampleServlet extends ServletTestCase {
@Test
public void testServlet() {
//初始化要测试的类
SampleServlet servlet = new SampleServlet();
</span><span class="com">//将会话中的变量设置为 doSomething()</span><span class="pln">
</span><span class="com">//我们正在测试的方法</span><span class="pln">
session</span><span class="pun">.</span><span class="pln">setAttribute</span><span class="pun">(</span><span class="str">"name"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"value"</span><span class="pun">);</span><span class="pln">
</span><span class="com">//调用方法进行测试,传递一个HttpServletRequest object(for example)</span><span class="pln">
</span><span class="typ">String</span><span class="pln"> result </span><span class="pun">=</span><span class="pln"> servlet</span><span class="pun">.</span><span class="pln">doSomething</span><span class="pun">(</span><span class="pln">request</span><span class="pun">);</span><span class="pln">
</span><span class="com">//执行验证测试是否成功</span><span class="pln">
assertEquals</span><span class="pun">(</span><span class="str">"something"</span><span class="pun">,</span><span class="pln"> result</span><span class="pun">);</span><span class="pln">
assertEquals</span><span class="pun">(</span><span class="str">"otherValue"</span><span class="pun">,</span><span class="pln"> session</span><span class="pun">.</span><span class="pln">getAttribute</span><span class="pun">(</span><span class="str">"otherName"</span><span class="pun">));</span><span class="pln">
}
}
JWebUnit
JWebUnit是用于Web应用程序的基于Java的测试框架。它使用统一,简单的测试界面包装了诸如HtmlUnit和Selenium之类的现有测试框架,以测试Web应用程序的正确性。
这是示例代码。
import junit.framework.TestCase; import net.sourceforge.jwebunit.WebTester;public class ExampleWebTestCase extends TestCase { private WebTester tester;
public ExampleWebTestCase(String name) { super(name); tester = new WebTester(); }
//set base url public void setUp() throws Exception { getTestContext().setBaseUrl("http://myserver:8080/myapp"); }
//test base info @Test public void testInfoPage() { beginAt("/info.html"); } }
XMLUnit
XMLUnit提供了一个JUnit扩展类XMLTestCase和一组支持类,这些类允许对以下内容进行声明:
两段XML之间的差异(通过Diff和DetailDiff类)。
一段XML的有效性(通过Validator类)。
使用XSLT(通过Transform类)转换XML片段的输出。
在XML上对XPath表达式的求值(通过实现XpathEngine接口的类)。
通过DOM遍历(通过NodeTest类)公开的XML中的各个节点。
让无涯教程假设要比较两个XML,并断言它们是相等的。可以编写一个像这样的简单测试类-
import org.custommonkey.xmlunit.XMLTestCase;public class MyXMLTestCase extends XMLTestCase {
//this test method compare two pieces of the XML @Test public void testForXMLEquality() throws Exception { String myControlXML = "<msg><uuid>0x00435A8C</uuid></msg>"; String myTestXML = "<msg><localId>2376</localId></msg>"; assertXMLEqual("Comparing test xml to control xml", myControlXML, myTestXML); } }