5

任何人都可以推荐 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"
4

1 回答 1

4

所以,我所做的只是根据测试是否通过,列出一个评估为真或假的语句列表。由于没有数百个测试,但通常少于 10 个,这对我来说很好。

如果我做的更离谱,我可能会使用 Throw,因为它简化了调试。

所以,我会这样做:

Expect[ description_, val_, expr_ ] := 
If[
    val != expr,
    Throw[
        StringJoin[ "GOT UNEXPECTED VALUE ", ToString[expr], 
        " INSTEAD OF ", ToString[val] ]
        , "assertion exception"
    ]
]
于 2009-07-23T08:59:59.000 回答