1

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

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

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

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

或者还有其他方法可以做到这一点吗?(只需创建一些实用程序?)

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

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

谢谢!

4

2 回答 2

0

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

如果 ping 不适用于类中的所有测试,那么您必须从这些方法中显式地点击 ping。

于 2014-01-13T18:03:28.760 回答
0

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

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

于 2014-01-13T18:13:56.547 回答