技术开发 频道

NetBeans 5.0 单元测试实践

 /**
* add 方法的测试(属于类 moneychange.Money)。
*/
public void testAdd() {
System.out.println( "add");
 Money m = null;
Money instance = null;
Money expResult = null;
Money result = instance.add(m);
assertEquals(expResult, result);
// TODO 查看生成的测试代码并删除会失败的缺省调用。
fail( "测试案例为原型。");
}

 /**
 * equals 方法的测试(属于类 moneychange.Money)。
*/
public void testEquals() {
System.out.println( "equals");
 Object anObject = null;
Money instance = null;
boolean expResult = true;
boolean result = instance.equals(anObject);
assertEquals(expResult, result);
// TODO 查看生成的测试代码并删除会失败的缺省调用。
fail( "测试案例为原型。");
 }
}

    此时,如果要执行测试,可以展开项目中的测试包,在测试类上鼠标右键单机,在弹出的菜单上选择“运行文件”,如下图所示。

    
    默认的测试类的执行结果是全部都不能通过的,结果如下:

    


    我们需要对生成的测试代码进行修改,将我们的测试用例以及期望的结果写入测试代码中,将fail(“测试案例为原型”);语句删除。testAdd的代码修改后如下:

public void testAdd() {
 System.out.println("testAdd");

// TODO add your test code below by replacing the default call to fail.
// fail( "The test case is empty.");

 // Ceate the objects we will use during the test. These objects are commonly
// referred to as a test'sfixture.? All we need for the testAdd test are some
// Money objects.
Money m12CHF= new Money(12, "CHF");?
Money m14CHF= new Money(14, "CHF");???????
Money expected= new Money(26, "CHF");

// Exercise the objects in the fixture
 Money result= m12CHF.add(m14CHF);??

 // Verify the result
 Assert.assertTrue(expected.equals(result));????
}

    该方法创建了两个进行加法操作的对象m12CHF和m14CHF,相加的结果为result对象,然后将result与期望的对象expected对象进行相等性测试。对修改后的测试代码再次执行结果如下:

    

    对所有的测试用例进行测试通过后,即可以开始填写单元测试报告。通过单元测试的类比没有经过测试的类的稳定性将大大提高。

    6 总结

    NetBeans集成的Junit单元测试工具为单元测试提供了一个很好的框架,我们无需将精力浪费在写单元测试代码上,而将更多的关注测试用例的设计。开发人员进行测试越来越方便,这也增强了开发人员进行单元测试的信心,在赶工期的同时将单元测试做好,是保证项目最后能够成功,不成为“无底洞”的一个重要手段。

0
相关文章