2009-11-20 17 views
5

J'essaie le Phexample de Pharo et je l'aime, mais il me semble maladroit d'avoir la moitié de mes tests unitaires dans SUnit et l'autre moitié dans Phexample. Phexample a-t-il une fonction d'importation pour mes tests existants?Migration de SUnit à Phexample

Répondre

5

En ce qui concerne les coupleurs d'attente, il existe une série de règles de réécriture du côté classe de PhexMatcher. Ce screencast explique comment utiliser le moteur de réécriture de RB: Code Critics in OB (OB Screencast 3).

Première utilisation de ces règles

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

utilisent ensuite ces règles

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. 

En ce qui concerne l'introduction de dépendances entre les tests, vous devez réécrire vos tests en main. Pour JExemple il y a JUnit2JExample mais hélas il n'y a pas (encore) de migration automagique pour Smalltalk.


PS: si vous utilisez la dernière image Pharo vous devez utiliser OB et revenir le package OB-Refactory pour obtenir des règles de réécriture scope de travail. Exécutez simplement

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

C'est tellement cool! Je souhaite que toutes les bibliothèques fournissent des règles de réécriture :) –