查看一个JUnit报告。JUnit已经按包进行了组织。每个软件包都具有(或可以具有)TestSuite类,每个类依次运行多个TestCases。每个TestCase可以具有以下形式的多种测试方法public void test*()
,每种实际上都将成为它们所属的TestCase类的实例。每个测试方法(TestCase实例)都有一个名称和通过/失败条件。
我的管理人员需要的是各个TestStep的概念项目项目都报告自己的通过/失败标准。任何测试步骤的失败都不能阻止后续测试步骤的执行。
过去,我担任过的测试开发人员将TestCase类组织到与被测产品的零件相对应的程序包中,为每个测试创建一个TestCase类,并将每种测试方法都设置为测试中的单独“步骤”,在JUnit输出中完成自己的通过/失败标准。每个TestCase都是一个独立的“测试”,但是TestCase中的各个方法或测试“步骤”必须以特定的顺序发生。
TestCase方法是TestCase的步骤,测试设计人员在每个测试步骤中获得单独的通过/失败标准。现在测试步骤变得混乱,测试(当然)失败了。
例如:
Class testStateChanges extends TestCase
public void testCreateObjectPlacesTheObjectInStateA()
public void testTransitionToStateBAndValidateStateB()
public void testTransitionToStateCAndValidateStateC()
public void testTryToDeleteObjectinStateCAndValidateObjectStillExists()
public void testTransitionToStateAAndValidateStateA()
public void testDeleteObjectInStateAAndObjectDoesNotExist()
public void cleanupIfAnythingWentWrong()
每种测试方法都声明并报告其自己的单独通过/失败标准。为了订购而将其折叠为“一个大测试方法”将失去JUnit摘要报告中每个“步骤”的通过/失败标准粒度。……这让我的经理们不高兴。他们目前正在要求另一种选择。
任何人都可以解释带有加扰测试方法顺序的JUnit如何支持每个顺序测试步骤的独立通过/失败标准,正如上面所举例说明的,也是我的管理层所要求的?
无论使用哪种文档,我都认为这是JUnit框架中的严重回归,这使许多测试开发人员的工作变得困难。