Поля с автоматическим связыванием настраиваемых bean-компонентов не вводятся в Spring 6 при запуске тестов Junit.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Поля с автоматическим связыванием настраиваемых bean-компонентов не вводятся в Spring 6 при запуске тестов Junit.

Сообщение Anonymous »

У меня возникла проблема с запуском тестов Junit, в которых используются классы, помеченные как @Configurable. Поля с автоматическим связыванием настраиваемых помеченных компонентов не вводятся и остаются нулевыми.
Я предоставляю пример кода проекта, который воспроизводит проблему:
SomeDependency.class

Код: Выделить всё

package com.codeslab;

import org.springframework.stereotype.Service;

@Service
public class SomeDependency {

public String doSomethingInSomeDependency() {
return "doSomethingInSomeDependency";
}
}
SomeService.class

Код: Выделить всё

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 SomeTest.class

Код: Выделить всё

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);
}
}
pom.xml

Код: Выделить всё

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}



Я попытался воспроизвести проблему с помощью приведенного выше примера кода. Я уже использую aop:aspectj-autoproxy/ в контексте. Я пытался следовать
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)
Разве aop:aspectj-autoproxy/ не должен отвечать за внедрение некоторой зависимости в SomeService. Что я здесь упускаю или упускаю из виду?
Изменить: я предпочитаю плетение во время компиляции.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -running-j
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»