所以我想添加一个在所有其他测试之前执行的方法,以及在所有测试完成后执行的另一个方法,例如:
test_setup() -> {whatever}.
test_teardown(_) -> {whatever}.
我知道我可以通过明确说明要在单个测试中运行的所有测试来“手动”执行此操作:
fixture_test_() ->
{
setup,
fun test_setup/0,
fun test_teardown/1,
[test_something/0]
}
.
我希望有一种更好的方式来激活它,这允许我编写测试方法而无需将它们明确地添加到此列表中。似乎应该有更好的支持吗?
答案 0 :(得分:0)
关于fixtures learnyousomeerlang的段落很好地解释了使用eunit自动执行测试所能做的所有事情,但据我所知,你必须在某处列出测试断言,在平面或嵌套列表中。
还有一章关于common test可能对您有用。
答案 1 :(得分:0)
正如Pascal所写,遗憾的是EUnit没有测试用例自动注册。
另一方面,如果您内联编写测试函数并使用"测试标题",您可以获得相应的自动注册:
$ rebar eunit suite=pizza
==> mcs (eunit)
======================== EUnit ========================
module 'pizza'
module 'pizza_tests'
pizza_tests:29: fixture_test_ (description of test case 1)...ok
description of test case 2
pizza_tests:34: fixture_test_...ok
pizza_tests:35: fixture_test_...ok
pizza_tests:36: fixture_test_...ok
[done in 0.009 s]
pizza_tests: fixture_test_ (description of test case 3)...ok
[done in 0.015 s]
[done in 0.015 s]
=======================================================
All 5 tests passed.
在详细模式下运行时:
<table width="100%" border="1">
<tr><th>Cost</th><th>Action</th></tr>
<tr>
<td>30</td>
<td><input type="checkbox" class="check_list" val="30"/></td>
</tr>
<tr>
<td>20</td>
<td><input type="checkbox" class="check_list" val="20"/></td>
</tr>
<tr>
<td>25</td>
<td><input type="checkbox" class="check_list" val="25"/></td>
</tr>
<tr>
<td>35</td>
<td><input type="checkbox" class="check_list" val="35"/></td>
</tr>
<tr><td style="text-align: right">Sum</td><td><span id="sum"></span></td></tr>
<tr><td style="text-align: right">AVG</td><td><span id="avg"></span></td></tr>
</table>