Scala Test Suite with Spring - Сбой зависимости автопроводки bean-компонента с AutowireCapableBeanFactory - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь отразить уже работающий тест Java, автоматически подключая ресурс внешней службы с AutowireCapableBeanFactory. Вот то, что я придумал, похоже, работает, пока не пришло время автоматически связывать зависимости рассматриваемого сервиса.

Я также пытался использовать родительский класс Java для обоих наборов Java и Scala, которые автоматически связывают необходимые bean-компоненты, которые отлично работали для версии Java, но не для версии Scala из-за некоторых нулевых указателей.

class RequestSuite extends PropSpec
  with TableDrivenPropertyChecks with Matchers with BeforeAndAfterEach with BeforeAndAfterAll {

  var mockServer: ClientAndServer = _
  var proxy: ClientAndProxy = _

  var resource = new SpringBeanResourceThatWorksFineOnOtherJavaClass

  import BaseTest._
  setupData()
  ctx.getAutowireCapableBeanFactory.autowireBean(resource)
  val testResp = resource.create(request)

  override def beforeAll: Unit = {
    mockServer = startClientAndServer(1081)
    proxy = ClientAndProxy.startClientAndProxy(1091)
  }

  override def afterAll: Unit = {
    mockServer.stop
    proxy.stop
  }

  val testExample = {...}

  property("Attributes should match for each example value") {...}

  class CallBackTest extends ExpectationCallback {
    def mockResponse(httpRequest: HttpRequest): HttpResponse = response.withStatusCode(200)
      .withHeaders(header("Content-Type", "application/xml"))

    override def handle(httpRequest: HttpRequest): HttpResponse = mockResponse(httpRequest)
  }

}

Если я запускаю это, у меня появляется длинное сообщение об ошибке типа

Исключение или ошибка привели к прерыванию запуска: Ошибка создания компонента с название 'SpringBeanResourceThatWorksFineOnOtherJavaClass': Инъекция автосвязанных зависимостей не удалась; вложенное исключение org.springframework.beans.factory.BeanCreationException: не удалось поле autowire: частное AutowiredDependencyWithinThisService

вложенное исключение org.springframework.beans.factory.NoSuchBeanDefinitionException: нет квалифицирующий боб типа [AutowiredDependencyWithinThisService] найдено для зависимости: ожидается как минимум 1 компонент, который квалифицируется как autowire кандидат на эту зависимость. Аннотации зависимостей: {@ Org.springframework.beans.factory.annotation.Autowired (обязательно = истина)}

Для сравнения приведен фрагмент версии Java, который успешно выполняется

public class TestSuite extends BaseTest {
  private static ClientAndProxy proxy;
  private static ClientAndServer mockServer;

  SameServiceThatWorksFineWithTheJavaVersion resource = new SameServiceThatWorksFineWithTheJavaVersion();
  @Autowired
  private AutowireCapableBeanFactory beanFactory;

  @BeforeClass
  public static void startProxy() {
    mockServer = startClientAndServer(1080);
    proxy = ClientAndProxy.startClientAndProxy(1090);
  }

  @AfterClass
  public static void stopProxy() {
    proxy.stop();
    mockServer.stop();
  }

  @Test
  public void testStuff() throws SomeException {...}

  private void testStuffHelper() {
  ...
   beanFactory.autowireBean(resource);
   TestResp testResp = resource.doStuff(request);
  ...
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...