我计划在GWT中为我的一个助手方法编写一个单元测试用例。
我收到一个错误,说错误:GWT.create()只能在客户端代码中使用!例如,不能从服务器代码中调用它。如果您正在运行单元测试,请检查您的测试用例是否扩展了GWTTestCase,以及GWT.create()是否不是从初始化器或构造函数中调用的
当我调试时,我看到错误源于行
我的代码中的NumberFormat formatter = NumberFormat.getCurrencyFormat();
。请帮忙。
这是我的代码:
测试用例:
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;
}
}
待测试代码
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;
}
}
如果getModuleName
返回null
,那么您的测试就像任何其他JUnit测试一样运行,即而不是在GWT上下文中。
使getModuleName
返回您的模块的名称(您传递给GWT编译器的名称,或者您将在另一个GWT模块中<inherit>
的名称),以切换到以GWT的形式运行。