Wie zu injizieren parameter in Konstruktor der TestNG-Klasse?
Implementierte ich ein programm mit dem Strategie-Muster. Also ich habe ein interface welches verwendet wird, an einigen stellen und die konkrete Implementierung ersetzt werden kann.
Will ich jetzt testen Sie dieses programm. Ich würde gerne tun es in einer ähnlichen Art und Weise. Schreiben Sie eine Teste mal, welche tests gegen das interface. Die konkreten interface-Implementierung sollte injiziert werden, am Anfang der Prüfung, so dass ich kann einfach ausgewechselt werden.
Meine Testklasse sieht ähnlich aus wie diese:
public class MyTestClass {
private StrategeyInterface strategy;
public MyTestClass(StrategeyInterface strategy) {
this.strategy = strategy;
}
....test methods using the strategy.
}
Den parametrisierten contructor muss verwendet werden, um zu injizieren die konkrete Umsetzung der Strategie an thr-Anfang og des tests.
Nun habe ich nicht bekommen TestNG ausführen, und injizieren die konkrete Umsetzung Instanz. Ich habe versucht, mehrere Möglichkeiten, mit Vererbung @DataProvider
, @Factory
und die entsprechenden Methoden, aber ohne Glück.
Hier ist, was die testNG-report sagt:
Can't invoke public void MyClass.myTestMethod(): either make it static or add a no-args constructor to your class
Ich den maven-surefire-plugin, um die tests auszuführen. Hier ist der entsprechende Teil des pom.xml:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
Wie kann ich schreiben und ausführen der tests, mit dem Einspritzen einer konkreten Umsetzung in der test-Klasse?
Vielen Dank im Voraus.
P. S. könnte ich liefern, mehr code habe ich das versucht. Ich habe nicht post es hier, noch, denn ich habe versucht so viele Varianten, so dass ich bin irgendwie verwirrt jetzt und alle von Ihnen scheitern.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie mehrere Möglichkeiten. Wenn Sie mit Guice, hier ist eine sehr einfache Weise zu injizieren und Ihre Umsetzung.
Wenn nicht, können Sie eine Mischung aus Fabriken und data provider: