2

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

如何在 GNU Smalltalk 中进行断言?

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

4

4 回答 4

2

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

assert: aBlock 
    "Throw an assertion error if aBlock does not evaluates to true."
    aBlock value
        ifFalse: [AssertionFailure signal: 'Assertion failed']
于 2009-03-20T09:27:14.560 回答
2

以及自我断言:[ ... some block ]

适用于块和非块,因为向 Object 发送 #value 会返回 self。

于 2009-03-20T09:39:50.303 回答
0

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

self assert: 1 + 1 = 2

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

TestCase subclass: #MyTest

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

testBasicArithmetics

self assert: 1 + 1 = 2
于 2009-03-20T09:31:50.837 回答
0

上面已建议添加#assert:Object,但我会添加#assertBlockClosure(或[] classGNU Smalltalk 中的任何内容)。

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

并因此使用

[ value notNil ] assert.
[ value > 0 ] assert.
[ list isEmpty not ] assert.

等等。

于 2009-03-20T13:10:27.440 回答