尝试一些 smalltalk + TDD + “良好实践” 我遇到了一个丑陋的块:
如何在 GNU Smalltalk 中进行断言?
我只是在寻找一种简单ifFalse: [Die]
的东西
尝试一些 smalltalk + TDD + “良好实践” 我遇到了一个丑陋的块:
如何在 GNU Smalltalk 中进行断言?
我只是在寻找一种简单ifFalse: [Die]
的东西
这是断言的代码:来自Squeak(我建议您使用它而不是 GNU):
assert: aBlock
"Throw an assertion error if aBlock does not evaluates to true."
aBlock value
ifFalse: [AssertionFailure signal: 'Assertion failed']
以及自我断言:[ ... some block ]
适用于块和非块,因为向 Object 发送 #value 会返回 self。
很简单。在您的测试方法中,您编写:
self assert: 1 + 1 = 2
但首先您需要创建一个测试类作为 TestCase 的子类(在 Squeak 中),例如:
TestCase subclass: #MyTest
在这里,您编写测试方法,其名称必须始终以“test”开头,例如:
testBasicArithmetics
self assert: 1 + 1 = 2
上面已建议添加#assert:
到Object
,但我会添加#assert
到BlockClosure
(或[] class
GNU Smalltalk 中的任何内容)。
assert
this value ifFalse: [AssertionFailure signal: 'Assertion failed']
并因此使用
[ value notNil ] assert.
[ value > 0 ] assert.
[ list isEmpty not ] assert.
等等。