在我的应用程序中,我有一个使用其参数之一来设置命名空间的方法。代码有效,但是当我尝试对其运行测试时,我在NamespaceManager.set()
时得到了NullPointerException
.
public String create(Bar bar) {
NamespaceManager.set(bar.getFoo.toString());
// more code
return NamespaceManager.get();
}
我也尝试使用 void 作为返回类型,但错误是相同的。
我现在想知道此错误是否来自我的代码中的错误,或者是否无法访问单元测试中的NamespaceManager
。
编辑测试代码:
@Before
public void before() {
Bar bar = new Bar();
bar.setFoo(1L);
CSDatastoreService csDatastore = Mockito.mock(CSDatastoreServiceImpl.class);
SController ctrl = new SController(csDatastore);
}
@Test
public void createSetsNamaspaceToFooOfBar() {
Assert.assertSame(ctrl.create(bar), bar.getFoo().toString());
}
在单元测试中对 NamespaceManager 进行任何调用之前,先创建com.google.appengine.tools.development.testing.LocalServiceTestHelper
实例并调用setup()
。
例
public final static LocalServiceTestHelper helper = new LocalServiceTestHelper(
new LocalUserServiceTestConfig(),
new LocalDatastoreServiceTestConfig()
.setDefaultHighRepJobPolicyUnappliedJobPercentage(100.0f)
.setNoIndexAutoGen(true));
再往下:
@Before
public void setup() {
helper.setUp();
}