当EUnit测试失败时,Dets离开了开放过程

时间:2014-03-08 09:22:17

标签: erlang eunit dets

我一直在玩EUnit,这很好但是我遇到了dets的问题,当我的测试失败并且没有正确关闭dets时,文件仍在我的shell中打开而我无法关闭它因为它是由另一个进程创建的(当我运行测试时)。

你遇到过同样的问题吗?我可以有效地尝试捕获EUnit吗?

感谢您的任何意见!

2 个答案:

答案 0 :(得分:0)

使用Common Test。 EUnit适用于测试小功能而无副作用。

答案 1 :(得分:0)

EUnit 完全适合测试多个进程和DETS,不用担心。

我认为测试失败的唯一情况是因为你没有关闭DETS文件,因此你没有使用夹具。

就是这样的代码:

wrong_test() ->
    setup(),
    ?assert(false),
    cleanup().

不会调用cleanup(),因为带有?assert()的行会抛出异常。这是预期的行为。因此,如果清理()应该关闭DETS文件,它将不会关闭它。

EUnit documentation解释了无论测试发生什么,确保始终执行清理功能的方法是使用“fixture”,setup或{{1 }}。例如:

foreach

因此,对于这种特殊情况,没有必要在Erlang中“捕获”异常。你可以使用夹具获得相同的东西。

关于无法从shell关闭DETS文件的事实,夹具不会发生这种情况。此外,还有你的错误测试,这不是问题,因为从Erlang shell退出时文件将被正确关闭。 DETS文件未正确关闭的唯一时间是Erlang运行时系统本身崩溃。

其他有用的文档来源,比我之前提到的非常简洁的官方文档更容易理解,是LYSE chapter on Eunit以及关于Eunit的两个演示文稿,您可以在Erlang Factory网站上找到。