3

我有 100 种测试方法。每次测试后,我需要执行一些操作(数据清理)。这 100 个测试中的每一个都有不同的操作。这 100 个测试不在一个包或类中。它们是分布式的。

我怎样才能做到这一点?

现在,如果测试通过,清理就会发生,因为它是测试的一部分。但是,如果测试失败,则不会进行清理。我怎样才能使这项工作?

任何指针都会有所帮助。

4

4 回答 4

2

如果测试没有任何共同的清理,您可以确保使用 try/finally 块从测试方法中清理测试,例如:

try {
   // do test
}
finally {
   // do cleanup
}

如果测试方法之间有任何共同的清理,您可以用来@AfterMethod进行清理。

在您的情况下,听起来好像没有太多常见的清理,所以第一个可能对您更有效。如果您需要 100 种不同的清理方法,或者是否有任何常见的设置/清理,也可能值得考虑。

于 2013-04-20T13:44:55.723 回答
1

@AfterMethod 意味着您需要每个类都获取此方法。所以你需要去编辑每个类/方法。@AfterGroups 也一样。

我建议的是实现IInvokedMethodListener。这将为您提供 beforeInvocation 和 afterInvocation 方法。在 afterInvocation 方法中,实现您的清理代码。创建一个包含所有需要此清理的测试的套件文件并指定此侦听器。

希望能帮助到你。

于 2013-04-21T07:24:49.010 回答
1

听起来您可能已经在使用 @AfterMethod 在测试后进行清理。要在失败后使 @AfterMethod 工作,您需要使用:

@AfterMethod(alwaysRun=true)
于 2015-07-14T15:37:35.707 回答
0

您可以使用组并在某处运行@AfterGroups。还有一个@BeforeGroups。使用构建工具设置它有点乏味,并且与 IDE 也有一些交互。我相信还有一个 BeforeSuite 和 AfterSuite。

另一种方法是使用 Spring 并在所有测试中使用相同的 spring 上下文(spring 上下文以这种方式被重用)。然后,您可以在测试后销毁上下文时做一些事情。

于 2013-04-20T13:12:07.253 回答