JUnit及其相关的单元测试技术(2)

发表于:2015-09-21来源:uml.org.cn作者:不详点击数: 标签:junit
★ @Ignore:忽略的测试方法,标注的含义就是某些方法尚未完成,暂不参与此次测试;这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你

  ★ @Ignore:忽略的测试方法,标注的含义就是“某些方法尚未完成,暂不参与此次测试”;这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只需要把@Ignore标注删去,就可以进行正常的测试。

  ★ @BeforeClass:针对所有测试,只执行一次,且必须为static void;

  ★ @AfterClass:针对所有测试,只执行一次,且必须为static void;

  所以一个Junit 4 的单元测试用例执行顺序为:@BeforeClass –> @Before –> @Test –> @After –> @AfterClass;每一个测试方法的调用顺序为:@Before –> @Test –> @After。

  如下面例子:

  import static org.junit.Assert.*; import org.junit.After;import org.junit.AfterClass;import org.junit.Before;import org.junit.BeforeClass;import org.junit.Ignore;import org.junit.Test; public class JUnit4Test {

  @Before

  public void before() {

  System.out.println("@Before");

  }

  @Test

  public void test() {

  System.out.println("@Test");

  assertEquals(5 + 5, 10);

  }

  @Ignore

  @Test

  public void testIgnore() {

  System.out.println("@Ignore");

  }

  @Test(timeout = 50)

  public void testTimeout() {

  System.out.println("@Test(timeout = 50)");

  assertEquals(5 + 5, 10);

  }

  @Test(expected = ArithmeticException.class)

  public void testExpected() {

  System.out.println("@Test(expected = Exception.class)");

  throw new ArithmeticException();

  }

  @After

  public void after() {

  System.out.println("@After");

  }

  @BeforeClass

  public static void beforeClass() {

  System.out.println("@BeforeClass");

  };

  @AfterClass

  public static void afterClass() {

  System.out.println("@AfterClass");

  };

  };

  右击测试类,选择Junit运行……

  输出结果如下:

  @BeforeClass

  @Before

  @Test(timeout = 50)

  @After

  @Before

  @Test(expected = Exception.class)

  @After

  @Before

  @Test

  @After

  @AfterClass

  在eclipse中junit运行结果视图中可以看到testIgnore是被忽略的,没有执行;还有其中有一个方法运行报错。

  2. 使用HttpUnit进行Web应用测试:

  上面我们介绍Junit是对应用程序代码的片段做测试,那么如何对Web应用进行测试呢?这就需要我们了解HttpUnit了。

  2.1 什么是HttpUnit:

  HttpUnit是SourceForge下面的一个开源项目,它是基于Junit的一个测试框架,主要关注于测试Web应用,解决使用 Junit框架无法对远程Web内容进行测试的弊端。HttpUnit通过模拟浏览器的行为,处理页面框架(frames),cookies页面跳转 (redirects)等。通过HttpUnit提供的功能,你可以和服务器端进行信息交互,将返回的网页内容作为普通文本、XML Dom对象或者是作为链接、页面框架、图像、表单、表格等的集合进行处理。HttpUnit还提供了一个模拟Servlet容器,让你可以不需要发布 Servlet,就可以对Servlet的内部代码进行测试。

  2.2 如何使用HttpUnit:

  到HttpUnit的主页http://httpunit.sourceforge.net下载最新的包文件,解压后将%httpunit_home%/lib/*.jar; %httpunit_home%/jars/*.jar加入到Eclipse工程的Java build Path变量中。

  2.3 如何使用HttpUnit和Junit编写Web应用的测试用例:

  在HttpUnit框架中,WebConversation类是最重要的类,它用于模拟浏览器的行为,WebRequest类用于模仿客户请求,通过它可以向服务器发送信息,WebResponse类用于模拟浏览器获取服务器端的响应信息。

  下面我们用HttpUnit编写一个测试用例,测试在百度里面搜索“诚毅软件”,搜索结果里面有没有包含“我们努力使事情更简单”的内容。

  在Eclipse中运行结果中可见在百度里面搜索“诚毅软件”,搜索结果里面有包含“我们努力使事情更简单”的内容。

  3. 使用EclEmma进行覆盖测试

  3.1 什么是覆盖测试

原文转自:http://www.uml.org.cn/Test/201001217.asp