JUnit Overview Part I

Standard

JUnit Overview
一些约定:

  • 所有的测试用例必须继承自TestCase
  • 所有的测试方法必须以test开始。比如testStringEquals

然后我们由简入深,一?一?地来介绍一下JUnit的用法。

最简单的测试用例。(SimpleTestCase)
只需测试一个特定的方法,你可以

  1. 使用带参数或不带参数的构造函数创建一个TestCase对象
  2. 覆盖runTest方法
  3. 可以使用Assert类的各种方法来求证想要得到的结果

最早看Junit的cookbook的时候,就被这些卡住了。现在看来其实很简单,看看下面这个例?就能明白了。

Example Code:
public class SimpleTestCase extends TestCase {
TestCase simple = new TestCase(”Simple Test”) {
public void runTest() {
testIntEquals();
}
};
public void testIntEquals() {
Assert.assertEquals(1, 1);
}
}

构建测试环境(或者说测试基础)Fixture
事实上,经常使用的总是对同一个或相似的对象进行多种测试。这些对象集就构成测试的背景,即测试环境。而构建这些测试环境往往会花费你很大的精力。 Junit把提供了setUp方法来初始化这些对象,tearDown来释放资源。当在一个特定的测试环境下进行多个功能测试的时候:

  1. 创建一个继承自TestCase的?类
  2. 可以建立多种构造函数。带参数或不带参数
  3. 增加测试环境?的每一个对象
  4. 覆盖setUp方法来来初始化上述对象
  5. 覆盖tearDown方法来释放setUp?分配的资源

Example Code:
public class MoneyTest extends TestCase {
private Money f12CHF;
private Money f14CHF;
private Money f28USD;
protected void setUp() {
f12CHF= new Money(12, “CHF”);
f14CHF= new Money(14, “CHF”);
f28USD= new Money(28, “USD”);
}
}

测试用例(TestCase)

  • 不同情况下怎样使用测试用例呢?在没有测试环境下(Fixture)的TestCase非常简单。-’SimpleTestCase
  • 那么如何在Fixture下调用单个测试方法呢?
  • 在Fixture的类?实现测试方法,并且是Public
  • 以测试方法名作为参数来构造TestCase对象
  • 当进行测试的时候,将执行具有这个名称的测试方法

Example Code:
public void testMoneyMoneyBag() {
// [12 CHF] + [14 CHF] + [28 USD] == {[26 CHF][28 USD]}
Money bag[]= { f26CHF, f28USD };
MoneyBag expected= new MoneyBag(bag);
assertEquals(expected, f12CHF.add(f28USD.add(f14CHF)));
}
new MoneyTest(”testMoneyMoneyBag”)

如何执行多个测试方法呢?使用suite

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s