我有几个 EUnit 测试来测试gen_server
我创建的功能。例如,让我们对我正在编写的 IRC 服务器进行以下测试:
empty_channel_details_when_getting_details_of_channel_that_does_not_exist_test() ->
start(),
?assertMatch({ok, #channel_details{name = "name", users = #{}}}, irc_channel_manager_server:get_channel_details("name")).
当然,由于我是使用 TDD 方法创建的,因此运行我的 gen_server时会case_clause
因退出而崩溃,因为我显然还没有编写该测试用例。
问题在于导致 EUnit 显示的输出,即:
=======================================================
Failed: 0. Skipped: 0. Passed: 0.
One or more tests were cancelled.
error
我个人认为这是错误的。不仅我的测试明显失败了,而且在这个测试模块中总共编写了 3 个测试用例,其中一个失败意味着其他两个测试都没有尝试过。
有什么方法可以让 EUnit 将退出或异常视为失败而不导致它取消测试运行?这使得确定意外中断更改的范围变得非常困难。