Smalltalk和断言

时间:2009-03-20 09:23:16

标签: smalltalk assertions gnu-smalltalk

尝试一些smalltalk + TDD +“良好做法”我遇到了一个丑陋的块:

如何在GNU Smalltalk中进行断言?

我只是在寻找一种简单的ifFalse: [Die]种东西

4 个答案:

答案 0 :(得分:2)

这是断言的代码:来自Squeak(我建议你使用而不是GNU):

assert: aBlock 
    "Throw an assertion error if aBlock does not evaluates to true."
    aBlock value
        ifFalse: [AssertionFailure signal: 'Assertion failed']

答案 1 :(得分:2)

以及 自我断言:[...一些块]

适用于街区和非块,因为将#value发送给Object会返回self。

答案 2 :(得分:0)

很简单。在您的测试方法中,您写道:

self assert: 1 + 1 = 2

但首先你需要创建一个测试类作为TestCase的子类(在Squeak中),例如:

TestCase subclass: #MyTest

在这里编写测试方法,其名称必须始终以'test'开头,例如:

testBasicArithmetics

self assert: 1 + 1 = 2

答案 3 :(得分:0)

上面已建议将#assert:添加到Object,而是将#assert添加到BlockClosure(或GNU中[] class的任何内容Smalltalk中)。

assert
    this value ifFalse: [AssertionFailure signal: 'Assertion failed']

因此在

中使用
[ value notNil ] assert.
[ value > 0 ] assert.
[ list isEmpty not ] assert.

等等。