我在用Artos跑步机。在我们的开发环境中,我们保留了<property name="stopOnFail">true</property>,这样我就可以调试我的更改,而不必处理依赖的测试用例失败。在生产环境中,我们保留<property name="stopOnFail">false</property>,这样测试执行就不会在失败时停止,我们可以在早上分析日志。
现在我有了一个不同的要求,我有一些测试是其他单元的先决条件,所以如果关键测试失败了,我想跳过单元的其余部分,否则它会使我们的产品陷入糟糕的状态。
是否只有在特定测试用例或测试单元失败时,Artos才能跳过单元的其余部分?或者我们可以执行特定的步骤,在情况下测试不能确保我们安全地执行其余的测试?
发布于 2019-09-01 06:07:40
根据需求,在Artos中有多种实现方法。
dropRemainingUnitsUponFailure = true,如下所示。这将确保如果testUnit_1()失败,其余的单元将从执行列表中删除。 @TestPlan(preparedBy = "user", preparationDate = "19/02/2019", bdd = "GIVEN..WHEN..AND..THEN..")
@TestCase(sequence = 1)
public class TestCase_1 implements TestExecutable {
@Unit(sequence = 1, dropRemainingUnitsUponFailure = true)
public void testUnit_1(TestContext context) {
context.getLogger().info("do something");
}
@Unit(sequence = 2)
public void testUnit_2(TestContext context) {
context.getLogger().info("do something");
}
@Unit(sequence = 3)
public void testUnit_3(TestContext context) {
context.getLogger().info("do something");
}
}dropRemainingTestsUponFailure = true和dropRemainingUnitsUponFailure = true不仅会删除其余的单元,而且剩余的测试用例也会从执行列表中删除,这样就可以实现干净的退出。 @TestPlan(preparedBy = "user", preparationDate = "19/02/2019", bdd = "GIVEN..WHEN..AND..THEN..")
@TestCase(sequence = 1, , dropRemainingTestsUponFailure = true)
public class TestCase_1 implements TestExecutable {
@Unit(sequence = 1, dropRemainingUnitsUponFailure = true)
public void testUnit_1(TestContext context) {
context.getLogger().info("do something");
}
@Unit(sequence = 2)
public void testUnit_2(TestContext context) {
context.getLogger().info("do something");
}
@Unit(sequence = 3)
public void testUnit_3(TestContext context) {
context.getLogger().info("do something");
}
}在日志文件中,您将看到警告
=========================================================================
========== DROP REMAINING UNITS UPON FAILURE IS TRIGGERED ===============
================== REMAINING UNITS WILL BE DROPPED ======================
=========================================================================和
=========================================================================
========== DROP REMAINING TESTS UPON FAILURE IS TRIGGERED ===============
================== REMAINING TESTS WILL BE DROPPED ======================
=========================================================================这样你就会知道发生了什么。
回答你的第二个问题
(问题:如果有任何方法在测试单元失败时执行清理,那么在执行下一个单元测试之前,您可以从糟糕的状态中恢复产品)
如果我正确地理解了它,那么就可以使用注释@AfterFailedUnit来完成它。
如果您创建了一个方法,如下所示,在runner类中
@AfterFailedUnit
public void globalAfterFailedTestUnit(TestContext context) throws Exception {
context.getLogger().info("This method executes after failed test unit");
}然后在每个测试单元发生故障后执行,您应该在这个方法中实现清理逻辑。希望这能回答你的问题
https://stackoverflow.com/questions/57684150
复制相似问题