Я предоставляю пример кода проекта, который воспроизводит проблему:
SomeDependency.class
Код: Выделить всё
package com.codeslab;
import org.springframework.stereotype.Service;
@Service
public class SomeDependency {
public String doSomethingInSomeDependency() {
return "doSomethingInSomeDependency";
}
}
Код: Выделить всё
package com.codeslab;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Configurable;
@Configurable
public class SomeService {
@Autowired
private SomeDependency mSomeDependency;
public String doSomething() {
return mSomeDependency.doSomethingInSomeDependency();
}
}
SomeTest-Context.xml
Код: Выделить всё
Код: Выделить всё
package com.codeslab;
import org.junit.jupiter.api.*;
import org.junit.jupiter.api.extension.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@ContextConfiguration(locations = { "/SomeTest-Context.xml" })
@ExtendWith(SpringExtension.class)
public class SomeTest {
final SomeService mMyService = new SomeService();
@Autowired
private SomeDependency mSomeDependency;
@Test
public void test() {
Assertions.assertNotNull(mSomeDependency);
final String something = mMyService.doSomething();
Assertions.assertEquals("doSomethingInSomeDependency", something);
}
}
Код: Выделить всё
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.codes-lab
spring-autoproxy
1.0-SNAPSHOT
21
21
UTF-8
1.9.22.1
6.1.13
5.10.3
org.junit.jupiter
junit-jupiter
${junit.version}
test
org.junit.jupiter
junit-jupiter-api
${junit.version}
test
org.springframework
spring-web
${spring.version}
org.springframework
spring-beans
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-test
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-aspects
${spring.version}
Spring-aop-configurable-testing
Но я все равно получаю NPE как:
java.lang.NullPointerException: невозможно вызвать «com. codelab.SomeDependency.doSomethingInSomeDependency()", потому что "this.mSomeDependency" имеет значение null
Код: Выделить всё
at com.codeslab.SomeService.doSomething(SomeService.java:23)
at com.codeslab.SomeTest.test(SomeTest.java:32)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Изменить: я предпочитаю плетение во время компиляции.
Подробнее здесь: https://stackoverflow.com/questions/790 ... -running-j