Cucumber (Java) - 将检查异常转换为运行时异常 - 这是个好主意吗?

问题描述 投票:0回答:1

我正在开发的测试框架是基于Java中的Cucumber和Selenium。代码库包含许多执行某些操作的基本/通用方法,这些方法会抛出已检查的异常(对于文件读取或解析 JSON 有效负载等操作) - 这些方法中的已检查异常不是使用 try-catch 块处理的,而是通过而只是扔掉。

因此,任何调用这些方法的方法也需要抛出该异常。这导致了一个非常“污染”的代码库,其中几乎每个方法都会抛出异常,即使该方法的作用和它抛出的异常之间没有任何联系,即使这些方法位于原始方法“之上”几层,正在生成异常。

据我了解,最终这些检查的异常最终由 Cucumber 框架代码本身处理 - 因为测试/场景执行失败,框架移至下一个测试/场景。

那么,在生成检查异常的基本/通用方法中使用 try-catch 块,并将它们转换为运行时异常,使正在执行的测试失败并继续进行下一个测试,这是一个好主意吗?场景?

在我看来,只要发生这样的检查异常,测试就会失败,无论如何都需要重新运行。因此,使用这种技术,不会引发已检查的异常,并且可以从所有依赖的方法中删除“throws”子句,从而使代码库更易于阅读。

java exception error-handling cucumber
1个回答
0
投票

理想情况下,您还应该避免使用 try-catch 块来抛出新的 RuntimeException。这为链条添加了另一个例外。

相反,您想重新抛出异常。

例如在 JUnit 5 中:

https://github.com/junit-team/junit5/blob/3e6c876a4be3ce9498ad1dea4c89100640f663c9/junit-platform-commons/src/main/java/org/junit/platform/commons/util/ExceptionUtils.java#L72-82

为了避免自己编写,请使用 Lombok 看看。

@SneakyThrows
注释有效地将已检查异常转变为未检查异常。 https://projectlombok.org/features/SneakyThrows

© www.soinside.com 2019 - 2024. All rights reserved.