当我尝试使用CustomDataProvider作为输入和输出时,我遇到了一个问题。在场景中的某个时刻,会引发NPE异常。
我已经读过了
What is a NullPointerException, and how do I fix it?
:我了解什么是NPE以及如何解决它。在我的案例中,我不理解的是,为什么在执行的那个一刻,在我的案例中,这个特定的对象会发生这样的事情。我不是NoraUI框架的专家。当我查看现有的数据提供程序时,它们从不操作indexData对象,所以我也不这么做。我不知道它们是如何处理的以及何时初始化的。这就是为什么我要问这样一个问题:为什么这一刻会发生,如果我忘记了一些事情给更有经验的人。对不起,如果不清楚的话。这是一个与NoraUI框架有关的问题,而不是一个纯Java的问题。
scenarioInitiator的执行与CustomDataProvider配合良好:数据生成良好并写入小黄瓜。但就在场景启动之初,抛出了异常:
[2017-08-16 15:37:28]: ********************************************************************************************************
[2017-08-16 15:37:28]: * *
[2017-08-16 15:37:28]: * Scénario: [@scenario] étape 1 sur 0 avec 0 erreur(s) et 0 alerte(s). Il reste 0s *
[2017-08-16 15:37:28]: * *
[2017-08-16 15:37:28]: ********************************************************************************************************
Failed scenarios:
steps/scenarios/scenario.feature:4 # Scenario: scenario
1 Scenarios (1 failed)
28 Steps (28 skipped)
5m52.930s
java.lang.NullPointerException
at noraui.exception.Result$Success.<init>(Result.java:32)
at noraui.application.steps.CucumberHooks.setUpScenario(CucumberHooks.java:44)
通过对调试的进一步研究,似乎引发异常的确切原因是
在
对象:
public static class Success<O> extends Result {
private final O object;
private static final Logger logger = Logger.getLogger(Success.class.getName());
public Success(O object, String message) throws TechnicalException {
this.object = object;
this.message = message;
for (Integer i : Context.getDataInputProvider().getIndexData(Context.getCurrentScenarioData()).getIndexes()) {
Context.getDataOutputProvider().writeSuccessResult(i);
}
logger.info(message + " [" + success() + "]");
}
public O success() {
Optional<O> o = Optional.ofNullable(object);
return o.isPresent() ? o.get() : null;
}
}
我想这和
自定义数据提供程序:
我的自定义数据提供程序启动会多次查询,其中一些查询会根据第一个查询返回的内容进行修改。这些查询的最终结果存储在
ArrayList<ArrayList<String>> dataTable
| Offer | Product | Items | Results |
所以我的问题是: