2013-06-22 4 views
1

Je prévoyais d'écrire un test élémentaire pour l'une de mes méthodes auxiliaires dans GWT.Cas de test de l'unité GWT

Erreur d'obtention indiquant que ERREUR: GWT.create() est uniquement utilisable dans le code client! Il ne peut pas être appelé, par exemple, à partir du code du serveur. Si vous exécutez un test unitaire, vérifiez que votre scénario de test étend GWTTestCase et que GWT.create() n'est pas appelé depuis un initialiseur ou un constructeur.

Quand je debug, je vois que l'erreur est originaire de la ligne

NumberFormat formatter = NumberFormat.getCurrencyFormat(); dans mon code. Aide aimablement.

Ceci est mon code:

TestCase:

public class CurrencyFormatterTest extends GWTTestCase { 

    private CurrencyFormatter currencyFormatter = new CurrencyFormatter(); 

    public void testCurrencyFormatForActualCurrencyString() { 
     String formattedString = currencyFormatter.format(" 123456.78999"); 
     assertEquals("US$123,456.79", formattedString); 
    } 

@Override 
    public String getModuleName() { 
     return null; 
    } 
} 

code à tester

public class CurrencyFormatter implements Formatter { 

    @Override 
    public String format(Object value) { 
     if (value == null || value.equals("")) { 
      return ""; 
     } 
     Double val = Double.parseDouble(value.toString()); 
     NumberFormat formatter = NumberFormat.getCurrencyFormat(); 
     String formattedValue = formatter.format(val); 
     return formattedValue; 
    } 

} 

Répondre

2

Si getModuleName retours null alors votre test fonctionne comme tout autre test JUnit, à savoir pas dans un contexte GWT .

Marque getModuleName retourner le nom de votre module pour passer à l'exécution comme GWT (celui que vous passez au compilateur GWT, ou celui que vous allez <inherit> dans un autre module GWT).

+0

J'ai fait de même. Je vois que l'exécution du cas de texte prend vraiment beaucoup de temps (comme 4 à 5 secondes). Des raisons spécifiques? – LPD

+0

['GWTTestCase' est la raison] (http://www.gwtproject.org/doc/latest/DevGuideTesting.html): il lance un serveur web et une session DevMode avec une" émulation de navigateur "HtmlUnit. Jetez également un coup d'œil à [gwt-mockito] (https://github.com/google/gwtmockito), [gwt-test-utils] (https://github.com/gwt-test-utils/gwt-test- utils) et la classe GWTMockUtilities du kit de développement logiciel GWT. –