测试命名空间

Testing the namespace

在我的应用程序中,我有一个方法使用它的一个参数来设置命名空间。该代码有效,但是当我尝试对其进行 运行 测试时,我在 NamespaceManager.set() 处得到一个 NullPointerException

    public String create(Bar bar) {
        NamespaceManager.set(bar.getFoo.toString());
        // more code
        return NamespaceManager.get();
}

我也试过使用 void 作为 return 类型,但错误是一样的。

我现在想知道这个错误是我代码中的错误还是无法在单元测试中访问 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();
}