Junit : static MockMvc in @BeforeAll Methode führt zu NullPointer

8u3631984

Bekanntes Mitglied
Hallo ich möchte gerne meine PlayerController per MockMvc testen.

Kurz zu meiner Architektur :
Ich habe einen PlayerControler, der einen PlayerService beinhaltet, dieser kennt das PlayerRepository.

Ich möchte nun die Mtehoden addPlayer, updatePlayer und deletePlayer im Controller testen.
Die Update und delete Methoden erwarten alledings einen ID :

Java:
    @RequestMapping(path = "/update", produces = MediaType.APPLICATION_JSON_VALUE)
    public Player update(@RequestParam(value = "id") Long id,
                         @RequestParam(value = "email") String email,
                         @RequestParam(value = "name") String name,
                         @RequestParam(value = "preName", required = false) String preName,
                         @RequestParam(value = "birthday", required = false) String birthday,
                         @RequestParam(value = "gender", required = false) String gender) ...
Das Problem ist die ID : Ich möchte eiegntlich nur einen Player für alle Tests verwenden, und damit auch immer die gleiche ID.
Wenn ich für jeden Test einen neuen Player erzeuge, bekommt dieser immer einen neue ID (1,2,3,...). Der Test kennt diese ID aber nicht.
Daher möchte ich gerne, dass zu Begin der verschiedenen Test bereits das gleich Player Object existiert. Meine erste Idee war es, den Controller zu nutzen und über die Add Methode einen Player erzeugen zulassen.
Dazu habe ich eine @BeforeAll verwendet :
Java:
    @BeforeAll
    static void init() throws Exception {
        canAddPlayer();
    }
Diese muss aber static sein, tja und beginnen die Probleme, da hier der MockMVC verwendet wird :
Java:
@Autowired

private static MockMvc mockMvc;

In den normalen Tests wird diese mockMVC aber als NullPointer verwendet.
Ich hoffe ich habe nicht alle verwirrt.

Vielleicht kann mir jemand helfen eine Idee zu bekommen wie ich dieses Prioblem lösen kann.
Vielen Dank !!!!
 

Neumi5694

Top Contributor
"In den normalen Tests wird diese mockMVC aber als NullPointer verwendet."
Huh? Eine Variable wird als Nullpointer verwendet?

Letztendlich musst du eben 2 Variablen verwenden, eine die null bleibt und eine die für die Tests angelegt wird, wo sie nicht null sein darf (die wird dann in BeforeAll initialisiert).

Alternative lege 2 Testklassen an (ist letztendlich ja egal, wie sie heißen). Eine, welche die Instanz testet und eine, wo der Wert null sein muss.
 

Neue Themen


Oben