Beispiel für die Integration von JUnit + Spring
In diesem Tutorial zeigen wir Ihnen, wie Sie die Spring DI-Komponenten mit JUnit-Frameworks testen.
Verwendete Technologien:
-
Einheit 4.12
-
Hamcrest 1.3
-
Frühling 4.3.0.FREIGABE
-
Maven
1. Projektabhängigkeiten
Um Spring in JUnit zu integrieren, benötigen Siespring-test.jar
pom.xml
junit junit 4.12 test org.hamcrest hamcrest-core org.hamcrest hamcrest-library 1.3 test org.springframework spring-context 4.3.0.RELEASE org.springframework spring-test 4.3.0.RELEASE test
2. Federkomponenten
Eine einfache Federkomponenten, später zum Testen.
2.1 An interface.
DataModelService.java
package com.example.examples.spring; public interface DataModelService { boolean isValid(String input); }
2.2 Implementation of above interface.
MachineLearningService.java
package com.example.examples.spring; import org.springframework.stereotype.Service; @Service("ml") public class MachineLearningService implements DataModelService { @Override public boolean isValid(String input) { return true; } }
2.2 A Spring configuration file, component scanning.
AppConfig.java
package com.example.examples.spring; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan(basePackages = {"com.example.examples.spring"}) public class AppConfig { }
3. Beispiele für die Integration von JUnit + Spring
Kommentieren Sie die JUnit-Testklasse mit@RunWith(SpringJUnit4ClassRunner.class)
und laden Sie die Spring-Konfigurationsdatei manuell. Siehe unten:
MachineLearningTest.java
package com.example.spring; import com.example.examples.spring.AppConfig; import com.example.examples.spring.DataModelService; import com.example.examples.spring.MachineLearningService; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.is; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {AppConfig.class}) public class MachineLearningTest { //DI @Autowired @Qualifier("ml") DataModelService ml; @Test public void test_ml_always_return_true() { //assert correct type/impl assertThat(ml, instanceOf(MachineLearningService.class)); //assert true assertThat(ml.isValid(""), is(true)); } }
Erledigt.
4. FAQs
4.1 For XML, try this :
import org.springframework.test.context.ContextConfiguration; @ContextConfiguration(locations = { "classpath:pathTo/appConfig.xml", "classpath:pathTo/appConfig2.xml"}) public class MachineLearningTest { //... }
4.2 For multiple configuration files :
import org.springframework.test.context.ContextConfiguration; @ContextConfiguration(classes = {AppConfig.class, AppConfig2.class}) public class MachineLearningTest { //... }