5

私は Pharo のPhexampleを試していて気に入っていますが、単体テストの半分を SUnit で行い、残りの半分を Phexample で行うのは不便です。Phexample には既存のテストのインポート機能がありますか?

4

1 に答える 1

5

期待値マッチャーに関しては、 のクラス側に一連の書き換え規則がありPhexMatcherます。このスクリーンキャストでは、RB の書き換えエンジンの使用方法について説明しています: Code Critics in OB (OB Screencast 3)

最初にこれらのルールを使用します

RBParseTreeRewriter new
    replace: 'self assert: [ `@expression ]' with: 'self assert: `@expression';
    replace: 'self deny: `@expression' with: 'self assert: `@expression not';
    yourself.

次に、これらのルールを使用します

RBParseTreeRewriter new
    replace: 'self assert: `@value = `@expected' with: '`@value should = `@expected';
    replace: 'self assert: `@value ~= `@expected' with: '`@value should not = `@expected';
    replace: 'self assert: `@value > `@expected' with: '`@value should > `@expected';
    replace: 'self assert: `@value < `@expected' with: '`@value should < `@expected';
    replace: 'self assert: `@value >= `@expected' with: '`@value should >= `@expected';
    replace: 'self assert: `@value <= `@expected' with: '`@value should <= `@expected';
    replace: 'self assert: (`@value isKindOf: `@type)' with: '`@value should beKindOf: `@type';
    replace: 'self assert: `@expression isNil' with: '`@expression should be isNil';
    replace: 'self assert: `@expression notNil' with: '`@expression should be notNil';
    replace: 'self assert: `@expression `test not' with: '`@expression should not be `test'
        when: [:node | node arguments first receiver selector matchesRegex: '(is|has|not).+|atEnd' ];
    replace: 'self assert: `@expression `test' with: '`@expression should be `test'
        when: [:node | node arguments first selector matchesRegex: '(is|has|not).+|atEnd' ];
    replace: 'self assert: (`@collection includes: `@element) not' with: '`@collection should not be includes: `@element';
    replace: 'self assert: (`@collection includes: `@element)' with: '`@collection should be includes: `@element';
    yourself.

テスト間の依存関係の導入に関しては、手動でテストを書き直す必要があります。JExample にはJUnit2JExampleがありますが、残念ながら Smalltalk の自動移行は (まだ) ありません。


PS: 最新の Pharo イメージを使用している場合は、OB を使用して OB-Refactory パッケージを元に戻し、スコープ付きの書き換えルールを機能させる必要があります。実行するだけ

SystemBrowser default: OBSystemBrowserAdaptor.
Gofer new
    wiresong: 'ob';
    addPackage: 'OB-Refactory';
    revert
于 2009-11-20T12:32:10.070 に答える