Ich arbeite an einem Projekt mit Eclipse, mit Tomcat, Maven, Spring, Hibernate und Struts. Wir haben 2 Apps: Kern, der alle Beans (Services) und Web mit den Aktionen Ansichten usw. enthält.Kein qualifizierender Bean vom Typ für eine Bean in der Aktion, die ich gerade teste
Ich machte die JUnit Tests für die Dienste und beschloss, einige Tests für die Aktionen zu tun. Hier ist ein Beispiel dafür, was ich versuche zu tun:
Aktion
@Action(value = "/modif/register")
@ResultPath("...")
public class A{
@Autowired
private ExampleService exampleService;
public String execute(){
Example = exampleService.find(...);
...
...
}
}
-Test
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Config.class)
public class ATest extends StrutsSpringTestCase {
@Before
public void setUp(){
try {
super.setUp();
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testExecute() throws Exception{
request.setParameter(...);
//filling up the request
ActionProxy proxy = super.getActionProxy("/modif/register");
A register = (A) proxy.getAction();
String result = proxy.execute();
}
}
Config
@Configuration
@ComponentScan(basePackages = {"web","core"})
public class Config {
//configuration
}
Jedes Mal, wenn ich versuche, diesen Test zu starten, Ich habe diesen Fehler in der Zeile ActionProxy proxy = super.getActionProxy("/modif/register");
org.springframework.beans.factory.BeanCreationException: Fehler beim Erstellen der Bean mit dem Namen 'web.action.A': Die Injektion der autowired Abhängigkeiten ist fehlgeschlagen; verschachtelte Ausnahme ist org.springframework.beans.factory.BeanCreationException: Feld konnte nicht automatisch gestartet werden: public core.service.ExampleService web.action.A.exampleService; verschachtelte Ausnahme ist org.springframework.beans.factory.NoSuchBeanDefinitionException: Keine berechtigende Bean vom Typ [core.service.ExampleService] gefunden für Abhängigkeit: erwartet mindestens 1 Bean, die sich als Autowire-Kandidat für diese Abhängigkeit qualifiziert. Abhängigkeitsanmerkungen: {@ org.springframework.beans.factory.annotation.Autowired (erforderlich = wahr)}
Ich habe diesen Fehler, egal was ich Bean anrufe. Sie alle funktionieren in der Kern-App und in meiner Aktion, ich kann sie sogar direkt in meinem Test ohne Fehler aufrufen, aber es schlägt jedes Mal fehl, wenn ich versuche, einen Test zu starten.
Weiß jemand, was diese Ausnahme möglicherweise werfen könnte?
Warum 'super.getActionProxy'? Es gibt "StrutsSpringJUnit4TestCase" für JUnit 4. –
* Keine qualifizierende Bean vom Typ [core.service.ExampleService] * Sie haben diese Bean nicht in Ihrem Testkontext. –
@AleksandrM Vielen Dank für Ihre schnelle Antwort. Ich weiß nicht wirklich über das "Super". Es war 2 Tage, dass ich auf diesem Test bin und ich habe viele Dinge ausprobiert. Ich habe nur vergessen, es zu löschen. Die Sache, die ich nicht verstehe, ist, dass, wenn ExampleService nicht in meinem Testkontext ist, warum kann ich eine Autowired darauf machen und eine seiner Funktionen in meinem Test aufrufen? – nebra