无涯教程-JUnit - 扩展类

61 阅读2分钟

以下是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); } }

参考链接

www.learnfk.com/junit/junit…