Es ist die Rückseite der Packungsbeilage.
Angenommen, Sie haben die folgende Klasse definiert. Dies ist ein Test der Methode, die die beiden int
s des Arguments hinzufügt und zurückgibt.
InnerTest.java
@RunWith(SpringRunner.class)
public class InnerTest {
@Inject
Inner inner;
@Test
public void test() {
int a = 1;
int b = 2;
//Behauptung
assertThat(inner.add(a, b), equalTo(a + b));
}
/**
*Innere Klasse zum Testen
*
*/
public class Inner {
//Fügen Sie einfach die Werte der Argumente hinzu und geben Sie zurück
public int add(int a, int b) {
return a + b;
}
}
}
Ich denke also, dass die Bean-Definition wie folgt lautet.
InnerTest-context.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
">
<bean class="example.InnerTest.Inner" />
</beans>
Wenn du rennst ...
Fehlerprotokoll
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'example.InnerTest' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1493)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1104)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
... 43 common frames omitted
Warum! Bean definiert!
Als ich googelte, stellte eine Person dieselbe Frage.
How to create a Spring Bean of a Inner class?
Oder
--Verbinden Sie sich mit $ anstelle von.
Wenn Sie eines von beiden tun
Ich weiß nicht, ob Nachfrage besteht, aber als Hinweis, weil sie für das System benötigt wurde, das ich im Geschäft entwickle: stick_out_tongue :.
Wenn Sie beispielsweise in einem Test den Test Controller
als statische innere Klasse definieren, ist das Paket nur die Testklasse und es ist einfacher zu erkennen: v :.
Recommended Posts