Fitnesse:_u异常_;:java.lang.NullPointerException在fixture

Fitnesse:_u异常_;:java.lang.NullPointerException在fixture,java,fixtures,slim,fitnesse,Java,Fixtures,Slim,Fitnesse,我与fitnesse(20140630)+maven合作 但当我运行测试时,我得到异常: 异常:java.lang.NullPointerException 在com.playtech.openapi.core.fitnesse.tests.Fixtures.createContext(Fixtures.java:14)[文件:/D:/fitnessets/IntegrationTestsMobileAdmin/com playtech-openapi前端服务/com.playtech.open

我与fitnesse(20140630)+maven合作

但当我运行测试时,我得到异常:

异常:java.lang.NullPointerException 在com.playtech.openapi.core.fitnesse.tests.Fixtures.createContext(Fixtures.java:14)[文件:/D:/fitnessets/IntegrationTestsMobileAdmin/com playtech-openapi前端服务/com.playtech.openapi.core.fitnesse.tests/target/classes/] 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)[rt.jar:1.7.0_21] 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[rt.jar:1.7.021] 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[rt.jar:1.7.021] 在java.lang.reflect.Method.invoke(Method.java:601)[rt.jar:1.7.0_21] 在fitnesse.slim.fixtureInteraction.DefaultInteraction.methodInvoke(DefaultInteraction.java:16)[fitnesse standalone.jar] 在fitnesse.slim.MethodExecutor.callMethod(MethodExecutor.java:43)[fitnesse standalone.jar] 在fitnesse.slim.MethodExecutor.invokeMethod(MethodExecutor.java:30)[fitnesse standalone.jar] 在fitnesse.slim.MethodExecutor.findAndInvoke(MethodExecutor.java:52)[fitnesse standalone.jar] 在fitnesse.slim.FixtureMethodExecutor.execute(FixtureMethodExecutor.java:20)[fitnesse standalone.jar] 在fitnesse.slim.StatementExecutor.getMethodExecutionResult(StatementExecutor.java:121)[fitnesse standalone.jar] 在fitnesse.slim.StatementExecutor.callAndAssign(StatementExecutor.java:109)[fitnesse standalone.jar] 在fitnesse.slim.instructions.CallAndAssignInstruction.executeInternal(CallAndAssignInstruction.java:38)[fitnesse standalone.jar] 在fitnesse.slim.instructions.Instruction.execute(Instruction.java:30)[fitnesse standalone.jar] 在fitnesse.slim.listexcutor$Executive.executeStatement(listexcutor.java:50)[fitnesse standalone.jar] 在fitnesse.slim.listexcutor$Executive.executeStatements(listexcutor.java:44)[fitnesse standalone.jar] 在fitnesse.slim.listexcutor.execute(listexcutor.java:84)[fitnesse standalone.jar] 在fitnesse.slim.SlimServer.executeInstructions(SlimServer.java:107)[fitnesse standalone.jar] 在fitnesse.slim.SlimServer.processTheInstructions(SlimServer.java:94)[fitnesse standalone.jar] 在fitnesse.slim.SlimServer.processonesetof指令(SlimServer.java:68)[fitnesse standalone.jar] 在fitnesse.slim.SlimServer.tryProcessInstructions(SlimServer.java:54)[fitnesse standalone.jar] 位于fitnesse.slim.SlimServer.service(SlimServer.java:40)[fitnesse standalone.jar] 位于fitnesse.slim.SlimService.handle(SlimService.java:164)[fitnesse standalone.jar] 在fitnesse.slim.SlimService.acceptOne(SlimService.java:172)[fitnesse standalone.jar] 在fitnesse.slim.SlimService.accept(SlimService.java:134)[fitnesse standalone.jar] 在fitnesse.slim.SlimService.startWithFactory(SlimService.java:65)[fitnesse standalone.jar] 在fitnesse.slim.SlimService.main(SlimService.java:51)[fitnesse standalone.jar]


这是我的fitnesse内容

!!目录-R2-g-p-f-h

!!定义测试系统{slim}!路径 D:\FitnessTests\IntegrationTestsMobileAdmin\com playtech openapi前端服务\com.playtech.openapi.core.fitnesse.tests\target\classes

!!pomFile D:\FitnessTests\IntegrationTestsMobileAdmin\com playtech openapi前端服务\com.playtech.openapi.core.fitnesse.tests\pom。xml@compile

|导入|| com.playtech.openapi.core.fitnesse.tests|

!!定义折叠设置{true}

!!定义折叠_拆卸{true}

!|脚本| com.playtech.openapi.core.fitnesse.tests.Fixtures| |$CONTEXT=| createContext|

这是我的Java代码

public class Tests extends AbstractClientIT {

    public String createContext(){
        return "1234567";
    }
}


public class Fixtures {

    private Tests service2;


    public String createContext () throws RemoteException {
        return service2.createContext();
    }

}

service2尚未初始化,因此这是您的NPE

我是FitNesse的新手,但今天我在《使用FitNesse进行测试驱动的.NET开发》一书第24页上找到了这一段:

如果您创建了一个页面(或试图创建一个页面),但出现NullPointerException错误,或者该页面没有显示,则表明您选择了错误的名称。FitNesse只将CamelCase单词视为有效的页面名称,并且对此非常严格。页面名称必须以大写字母开头,并至少包含一个大写字母。还有一个问题需要注意:连续的大写字母。FitNesse不喜欢它们。因此,页面名称中的大写字母必须至少由一个小写字母分隔。这个惯例给FitNesse的新手带来了很多麻烦,但过一段时间你就会习惯了

public String createContext () throws RemoteException {
    return service2.createContext();
}