2009-11-20 4 views
5

Ich probiere Pharo's Phexample aus und ich mag es, aber es fühlt sich ungeschickt an, die Hälfte meiner Komponententests in SUnit und die andere Hälfte in Phexample zu haben. Hat Phexample eine Importfunktion für meine bestehenden Tests?Migration von SUnit nach Phexample

Antwort

5

In Bezug auf die Erwartungsvergleicher gibt es eine Reihe von Umschreibungsregeln auf der Klassenseite von PhexMatcher. In diesem Screencast wird erläutert, wie Sie die Rewrite-Engine von RB verwenden: Code Critics in OB (OB Screencast 3).

Erster Einsatz diese Regeln

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

Dann diese Regeln verwenden

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. 

die Einführung von Abhängigkeiten zwischen Test anbetrifft, müssen Sie Ihre Tests, die von Hand neu zu schreiben. Für JBeispiel gibt es JUnit2JExample aber leider gibt es (noch) keine automatische Migration für Smalltalk.


PS: wenn Sie die neueste Pharo Bild verwenden Sie arbeiten OB und kehren die OB-Refactory Paket zu erhalten scoped Rewrite-Regeln verwenden. Einfach ausführen

SystemBrowser default: OBSystemBrowserAdaptor. 
Gofer new 
    wiresong: 'ob'; 
    addPackage: 'OB-Refactory'; 
    revert 
+0

Das ist so cool! Ich wünsche, dass alle Bibliotheken Rewrite-Regeln zur Verfügung stellen :) –