J'essaie de tester certaines des méthodes de mon projet Spring (with maven). J'ai besoin d'utiliser @Autowired et @Inject sur plusieurs champs de mon projet. Pendant que je dirige mon projet, ça fonctionne bien. Mais JMH obtient toujours NullPointerException avec les champs @ Autowired/@ Inject.JMH Benchmark obtient NullPointerException avec champ Autowired dans le projet Spring (avec maven)
public class Resources {
private List<Migratable> resources;
@Autowired
public void setResources(List<Migratable> migratables) {
this.resources = migratables;
}
public Collection<Migratable> getResources() {
return resources;
}
}
Ma classe de référence
@State(Scope.Thread)
public class MyBenchmark {
@State(Scope.Thread)
public static class BenchmarkState {
Resources res;
@Setup
public void prepare() {
res = new Resources();
}
}
@Benchmark
public void testBenchmark(BenchmarkState state, Blackhole blackhole) {
blackhole.consume(state.res.getResources());
}
}
Quand je lance mon indice de référence, il se NullPointerException à Resources.getResources()
Plus précisément à resources
.
Il ne peut pas autowire setResources(). Mais si je cours mon projet (exclure le benchmark), ça fonctionne bien.
Comment puis-je me débarrasser de ce champ NullPointerException avec Autowired lors de l'analyse comparative?