有人可以在Mathematica 笔记本中推荐单元测试代码的模式吗?我熟悉Wolfram Workbench中的单元测试基础架构,但我也希望有一个很好的方法可以在常规GUI中的简单笔记本中使用。
我一直在使用简单的“期望”功能,如下所示。但问题是我必须重新评估笔记本并在视觉上扫描它以查找故障。什么是创建测试列表的好方法,或者通过扫描笔记本并生成这样的列表,这样它们都可以在一次调用中进行评估?
In[8]:= Expect[ description_, val_, expr_ ] :=
If[
val == expr,
"ok",
StringJoin[ "ERROR: GOT UNEXPECTED VALUE ", ToString[expr],
" INSTEAD OF ", ToString[val] ]
]
In[9]:= Expect[ "test passes", True, True ]
Out[9]= "ok"
In[10]:= Expect[ "test fails", True, False ]
Out[10]= "ERROR: GOT UNEXPECTED VALUE False INSTEAD OF True"
答案 0 :(得分:3)
所以,我所做的只是制作一个评估为真或假的语句列表,具体取决于测试是否通过。由于没有数百个测试,但通常少于10个,这对我来说很好。
如果我要更加自动地做,我可能会使用Throw,因为它简化了调试。
所以,我会这样做:
Expect[ description_, val_, expr_ ] :=
If[
val != expr,
Throw[
StringJoin[ "GOT UNEXPECTED VALUE ", ToString[expr],
" INSTEAD OF ", ToString[val] ]
, "assertion exception"
]
]
答案 1 :(得分:1)
我决定在Mathematica笔记本中推出自己的迷你测试框架。除了运行单元测试外,它还支持设置和拆卸功能。