Ich schreibe Junit Testfall mit Spring und Maven. Ich möchte Junit Testfälle parallel laufen lassen, dafür habe ich Maven Surefire Plugin Parallel Property verwendet. Diese Eigenschaft funktioniert nach Bedarf. Aber in meinem Testfall gibt @Autowired
null für den 2. Thread zurück.Spring @Autowired zurückgeben Null beim Launchen von Threads in Maven todsichere Plugin
pom.xml
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<parallel>methods</parallel>
<threadCount>5</threadCount>
</configuration>
Class1.java
@Component
@Scope("prototype")
public class Class1 {
public void setParam(String s) {}
}
Class2.java
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { ApplicationConfiguration.class }, loader = AnnotationConfigContextLoader.class)
public class Class2 {
@Autowired
Class1 class1;
@Before
public void setInitialValue(){
class1.setParam("test");
}
@Test
public void run1() {
}
@Test
public void run2() {}
}
In diesem Code run1
und run2
Methoden parallel genannt werden, aber wenn Faden 2 läuft , class1
Objekt in Class2
, setInitialValue()
Methode wirft einen NullPointerException
.
Ja, Sie haben Recht, ich habe verpasst zu setzen ", es wird class1.setParam (" test ") –
nur in dieser Frage sein. Mein Problem ist, ich bekomme null für Klasse1 Objekt in dieser Zeile class1.setParam (" Test "); –
Setter für die Variable/Klasse und in welcher Klasse –