Тестовый модуль Java Testng: Spring не может создать объект перед BeforeSuite или BeforeTest - PullRequest
0 голосов
/ 19 мая 2019

У меня юнит-тест работает нормально в его текущем формате. Мой юнит тест выглядит так:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.Assert;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

@Test
@ContextConfiguration(locations = { "classpath:testContext.xml" })
public class DialPadMonitorTest extends AbstractTestNGSpringContextTests
{
    @Autowired
    DialPadMonitor service;


    @BeforeSuite
    public void doBeforeSuite() {       
        System.out.println("Initializing suit.........");
    }

    @BeforeTest
    public void doBeforeTest() {
        System.out.println("Initializing tests.........");
    }

    @Test()
    void testIfEasyToDial()
    {
        service.createDialAssociation();

        Assert.assertTrue(service.isNumberEasy(159658521));
        Assert.assertTrue(service.isNumberEasy(555555555));
        Assert.assertFalse(service.isNumberEasy(505555555));
        Assert.assertFalse(service.isNumberEasy(555555505));

        Assert.assertTrue(service.isNumberEasy(2547096));
        Assert.assertTrue(service.isNumberEasy(5547521));
        Assert.assertFalse(service.isNumberEasy(2806547));
        Assert.assertFalse(service.isNumberEasy(3558123));

    }

    @Test()
    void testIfAssociated()
    {
        service.createDialAssociation();

        Assert.assertTrue(service.isNoAssociated(3,3));
        Assert.assertTrue(service.isNoAssociated(3,6));
        Assert.assertFalse(service.isNoAssociated(3,9));

    }
}

Хотя я вижу комментарии типа

  • System.out.println ("Инициализирующий костюм .........");
  • System.out.println ("Инициализация теста .........");

Проблема в том, что если я переместил service.createDialAssociation () в любой из BeforeSuite или BeforeTest, я получу исключение нулевого указателя.

Любое понимание, почему я получаю исключение нулевого указателя в этом случае и как решить?

Ответы [ 2 ]

1 голос
/ 20 мая 2019

Вы должны использовать @BeforeMethod вместо @BeforeTest, потому что контекст инициализируется таким образом. Вы можете увидеть это в исходном файле Spring .

1 голос
/ 19 мая 2019

Если вы хотите убедиться, что контекст Spring был загружен полностью, добавьте метод с аннотацией @ PostConstruct

Аннотация PostConstruct используется для метода, который необходимо выполнить после внедрения зависимости для выполнения любой инициализации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...