在执行测试之前,验证外部系统是否可用的最佳位置是什么?

时间:2014-01-13 17:54:08

标签: java junit junit-rule junit-runner

我们正在使用JUnit来执行集成测试以及依赖外部测试系统的系统集成测试(不一定由我们公司维护)。

我想知道在运行测试用例之前,在哪里放置检查系统是否可用的代码?所以我可以确定是否存在网络或其他问题而不是测试本身的问题。

JUnit允许在JUnit-Rules中设置测试的某些部分。设置与规则内的外部系统通信的服务并对规则内的外部系统进行一些基本检查(“ping”)是一个好主意吗?或者要存储状态并在Test中使用JUnit假设(rule.isAvailable)以避免执行测试?

或者将此验证码放在自定义JUnit Runner中会更聪明吗?

或者还有其他办法吗? (只是创建一些工具?)

如果不满足某些条件,目标是跳过测试,因为很明显测试会失败。我知道这表明一个糟糕的异常处理,但有很多遗留代码我无法完全改变。

我试图自己找一些文章,但似乎搜索条件(“测试”,“外部系统”等)有点吃力不讨好。

谢谢!

2 个答案:

答案 0 :(得分:0)

如果ping适用于类中的每个单独测试,我会将ping调用放在@Before方法中。 @Before将在每个测试方法之前执行(即@JUnit -annotated方法)。

如果ping不适用于该类中的所有测试,则必须从这些方法中明确命中ping。

答案 1 :(得分:0)

考虑使用here所述的org.junit.Assume.*。当假设失败时,默认情况下会忽略您的测试。当您的假设失败时,您可以编写自定义运行器来执行其他操作。

关键是,当外部服务的可用性等假设失败时,测试不会失败。