我有100种测试方法。每次测试后,我都需要执行一些操作(数据清理)。这100个测试中的每一个都有不同的动作。这100个测试不在一个包或类中。它们是分发的。
我怎样才能做到这一点?
现在,如果测试通过,则会进行清理,因为它是测试的一部分。但是,如果测试失败,则不会进行清理。我怎样才能做到这一点?
任何指针都会有所帮助。
答案 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上下文以这种方式重用)。然后,在测试后销毁上下文时,您可以执行一些操作。