2014-09-17 12 views

Antwort

4

@InjectMocks ist ein Mechanismus zum Mockito im Test Klasse in passenden Felder in der Klasse unter Test erklärt Felder einzuspritzen. Es erfordert nicht, dass die getestete Klasse eine Spring-Komponente ist.

@Autowired ist die Anmerkung von Spring, um eine Bean automatisch in eine nicht testfähige Produktionsklasse zu leiten.

Wenn Sie die @Autowired Anmerkungen in der Klasse unter Test nutzen wollten, wäre ein weiterer Ansatz springockito verwenden, die Ihnen mock Bohnen deklarieren kann, so dass sie die gleiche Art und Weise, dass der Frühling in die Klasse im Test autowired würde autowire die Bohne. Aber normalerweise ist das nicht notwendig.

+0

+1 als ich nicht von Springockito gehört hatte, die schön und sauber aussieht. – dectarin

+0

Springockito ist wirklich nett, ich benutze es nie, da ich Komponententests bevorzuge. Allerdings habe ich kürzlich (vor ein paar Monaten) gehört, dass Springockito einige Bugs hatte. – Brice

6

@InjectMocks Annotation teilt Mockito mit, alle Mocks (Objekte, die durch @Mock Annotation kommentiert wurden) in Felder des Testobjekts zu injizieren. Mockito verwendet Reflection dafür.

@Autowired Annotation sagt Spring-Framework, um Bean aus seinem IoC-Container zu injizieren. Frühling verwendet auch Reflexion für dieses, wenn es private Feldeinspritzung ist. Sie können sogar verwenden Sie sogar @Inject Annotation (Teil der Java EE-Spezifikation) mit dem gleichen Effekt.

Aber ich würde vorschlagen, die Vorteile von Constructor injection over Field injection zu betrachten. In diesem Fall müssen Sie @InjectMocks überhaupt nicht verwenden, da Sie über Konstruktor Mocks in das Testobjekt übergeben können. In Ihrem Test und in der Produktion wäre Reflection unter der Haube nicht erforderlich.

Wenn Sie Integrationstest mit einer Reihe von Spring Bohnen erstellen möchten, würde ich vorschlagen, einen Blick auf @DirtiesContext Annotation zu werfen. Es ist Teil des Spring-Framework-Moduls, das allgemein als "Spring Test" bezeichnet wird.

Verwandte Themen