我正在使用Espresso来构建UI测试。对于某些测试用例,我想在脚本失败的情况下调用特定的后续步骤来重置状态。
有没有办法为单个JUnit测试用例(<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="dext1">
<label> Extra Vas 1:</label>
<select name="ext1" id="ext1" ng-model="FormData.Phases">
<option name="vas" selected value="0"> -- NO EXTRA VAS -- </option>
<option name="vas" value="1"> VAS 1 </option>
<option name="vas" value="2"> VAS 2 </option>
<option name="vas" value="3"> VAS 3 </option>
</select>
</div>
<br/>
<div id="dext2">
<label> Extra Vas 2:</label>
<select name="ext2" id="ext2" ng-model="FormData.Phases">
<option name="vas2" selected value="0"> -- NO EXTRA VAS -- </option>
<option name="vas2" value="1"> VAS 1 </option>
<option name="vas2" value="2"> VAS 2 </option>
<option name="vas2" value="3"> VAS 3 </option>
</select>
</div>
<br/>
<div id="dext3">
<label> Extra Vas 3:</label>
<select name="ext3" id="ext3" ng-model="FormData.Phases">
<option name="vas3" selected value="0"> -- NO EXTRA VAS -- </option>
<option name="vas3" value="1"> VAS 1 </option>
<option name="vas3" value="2"> VAS 2 </option>
<option name="vas3" value="3"> VAS 3 </option>
</select>
</div>
)执行@After
步骤?
我能想到的唯一解决方案是创建一个单独的测试类。但我希望将测试用例分组到同一个测试类中。
答案 0 :(得分:2)
听起来有点奇怪;)但是......
您可以在单个测试中添加try / finally到之后的行为。例如:
@Test
public void testA() {
try {
// the body of testA
} finally {
// apply the 'after' behaviour for testA
}
}
或者,如果您真的想使用JUnit的@After
,那么您可以使用TestName Rule(自JUnit 4.7起),如下所示:
@Rule
public TestName testName = new TestName();
@After
public void conditionalAfter() {
if ("testB".equals(testName.getMethodName())) {
System.out.println("apply the 'after' behaviour for testB");
}
}
@Test
public void testA() {
}
@Test
public void testB() {
}