在testng框架中的每个测试方法之后进行清理

时间:2013-04-19 18:23:35

标签: java testing testng

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

我怎样才能做到这一点?

现在,如果测试通过,则会进行清理,因为它是测试的一部分。但是,如果测试失败,则不会进行清理。我怎样才能做到这一点?

任何指针都会有所帮助。

4 个答案:

答案 0 :(得分:2)

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

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

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

在你的情况下,它听起来不像有很多常见的清理,所以第一个可能更适合你。如果您需要100种不同的清理方法或者可以进行任何常见的设置/清理,也可能值得考虑。

答案 1 :(得分:1)

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

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

希望它有所帮助。

答案 2 :(得分:1)

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

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
  <div class="hidable dontprint">
    <div class="checkbox">
      <label>
        <input type="checkbox" id="coms1">Checkbox 1</label>
    </div>
    <div class="coms">
      <select class="form-control">
        <option>READ</option>
        <option>EDIT</option>
      </select>
    </div>
  </div>
  <div class="hidable dontprint">
    <div class="checkbox">
      <label>
        <input type="checkbox" id="coms2">Checkbox 2</label>
    </div>
    <div class="coms">
      <select class="form-control">
        <option>READ</option>
        <option>EDIT</option>
      </select>
    </div>
  </div>
  <div class="hidable dontprint">
    <div class="checkbox">
      <label>
        <input type="checkbox" id="coms3">Checkbox 3</label>
    </div>
    <div class="coms">
      <select class="form-control">
        <option>READ</option>
        <option>EDIT</option>
      </select>
    </div>
  </div>
</div>

答案 3 :(得分:0)

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

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