原文:http://msdn.microsoft.com/en-us/library/aa874515.aspx@H_301_5@
@H_301_5@
单元测试框架@H_301_5@
@H_301_5@
AX的MorphX IDE非常紧密地集成了单元测试框架。对于测试驱动开发(TDD)而言,这一集成是非常重要的,因为对于所要测试的每一个特性都可以创建对应的测试单元。更多TDD的信息可以查看微软的测试驱动开发向导。(我个人更建议你看看浅谈测试驱动开发)@H_301_5@
@H_301_5@
什么是单元测试@H_301_5@
一个单元测试就是一段代码,它用于测试实现某一特征(可理解为功能)的代码(下文中统一称作:特征代码)是否被正确实现。如果你遵循TDD原则的话,最佳实践是开发人员首先写单元测试,然后再写特征代码。这样可以将开发的重点放在特征代码的调用及创建更为友好的API上。在单元测试框架中,一个单元测试,包括测试用例、如何使用数据执行测试用例以及组织测试用例。一个测试用例既一个继承自SysTestCase的子类。你可以为每一段特征代码添加测试方法,可以在代码发送修改的使用执行测试用例。@H_301_5@
@H_301_5@
命名规则@H_301_5@
@H_301_5@
被测试的类的名字加test既是对应测试用例的名字,按照这样的规则,AX会自动关联类及测试用例,并且在执行测试用例时单元测试框架会统计测试的代码覆盖率。如果这样的命名规则不能满足你的需要,你可以选择下面的备选方法:@H_301_5@
@H_301_5@
命名规则 @H_301_5@ |
描述@H_301_5@ |
关联被测试的类。@H_301_5@ 如果你不想使用测试用例默认的命名规则(既类名+test),你可以选择重写该方法来实现测试用例与被测试类之间的关联。 @H_301_5@ |
|
关联正确的被测试对象类型 @H_301_5@ |
如果统计代码覆盖率功能被激活,并且测试用例中被测试对象的类型和名字被正确赋值,代码覆盖率才能够正常工作。@H_301_5@
@H_301_5@
例子@H_301_5@
@H_301_5@
这个例子演示如何声明一个测试类。被测试的类名字为Employee。@H_301_5@
@H_301_5@
@H_301_5@
测试用例创建向导@H_301_5@
@H_301_5@
下面的列表列举了创建测试用例的指导方针:@H_301_5@
- 你以被测试类名+test来命名你的测试用例.
- 以有意义的方式来分组测试用例。不要创建很多功能相似的用例,将用例分组可以帮助识别冗余。
- 不要为每一个方法和属性都创建测试用例。这样会导致很多不必要的简单测试用例,会加重你的工作负担。
- 重构你的测试用例以使他简单。如果测试代码被多个测试方法共享,可以创建一个新的私有方法来包含这段代码。
- 避免依赖和过度复杂,最后避免不同单元测试间共享测试代码。
@H_301_5@
单元测试框架提供了很多方法(断言方法,既判断是与不是的方法)来满足你的测试需要。创建测试用例时首先创建一个继承自SysTestCase的子类。@H_301_5@
下面的列表列举了使用断言时的一些指导方针:@H_301_5@
- 对已测试的条件不需要断言
- 在希望得到特定预期值的时候使用断言
- 在比较字符串时使用label而不是静态字符串
下表描述了SysTestCase类所包含的断言方法,更多的信息请点击每一个方法上的链接。@H_301_5@
@H_301_5@
描述@H_301_5@ |
|
assertEquals@H_301_5@ |
测试两个值是否相等 @H_301_5@ |
assertFalse@H_301_5@ |
测试值是否为false @H_301_5@ |
assertNotEqual@H_301_5@ |
测试两个值不相等 @H_301_5@ |
assertNotNull@H_301_5@ |
测试值不为null @H_301_5@ |
assertNotSame@H_301_5@ |
测试对象引用不相同 @H_301_5@ |
assertNull@H_301_5@ |
测试值为null @H_301_5@ |
assertRealEquals@H_301_5@ |
测试实数与特定值的差异是否在一定范围之内 @H_301_5@ |
assertSame@H_301_5@ |
测试对象引用相同 @H_301_5@ |
assertTrue@H_301_5@ |
测试值为true @H_301_5@ |
parmExceptionExpected@H_301_5@ |
测试一个预期的异常 @H_301_5@ |
@H_301_5@
@H_301_5@
单元测试工具栏