Весенняя зависимость впрыска с тестированием

StackOverflow https://stackoverflow.com/questions/2608528

  •  25-09-2019
  •  | 
  •  

Вопрос

Весенняя поддержка Junit довольно хорошо на этом: с RunWith а также ContextConfiguration Аннотация, все выглядит очень интуитивно понятно

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:dao-context.xml")

Этот тест сможет запустить как в Eclipse, так и в Maven правильно. Интересно, есть ли похожие вещи для Testng. Я рассматриваю возможность перехода к этой структуре «следующего поколения», но я не нашел совпадение для тестирования с весной.

Это было полезно?

Решение

Он также работает с Testng. Твой тестовое задание Класс должен продлевать Один из следующих классов:

Другие советы

Вот пример, который работал для меня:

import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.annotations.Test;

@Test
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class TestValidation extends AbstractTestNGSpringContextTests {

    public void testNullParamValidation() {
        // Testing code goes here!
    }
}

Весна и тестировать работать хорошо вместе, но есть некоторые вещи, которые нужно знать. Помимо подклассов AbstractTestngsPringContextestests, вы должны знать о том, как он взаимодействует со стандартными аннотациями на настройке / разрыва.

Testng имеет четыре уровня настройки

  • Beforesuite.
  • Безрезультатно
  • BeForeClass.
  • BeForemethod

которые происходят именно так, как вы ожидаете (отличный пример самодоступных API). Все они имеют необязательное значение, называемое «dependesdonmethods», которые могут взять строку или строку [], что является именем или именем методов на одном уровне.

Класс AbstrueTestngsPringContextests имеет аннотированный метод BeForeClass, называемый SpringTestContextPrepretestInstanceStance, который вы должны установить свой метод настройки, чтобы зависеть от того, если вы используете в нем класс TruSired. Для методов вам не нужно беспокоиться о автосистеме, так как это происходит, когда класс теста установлен в том, что перед методом класса.

Это просто покидает вопрос о том, как вы можете использовать урок захвата в способе, аннотированном с BeForesuite. Вы можете сделать это, вручную звонив SpringTestContextPrepretestInstance - пока его не настроен по умолчанию, чтобы сделать это, я успешно сделал это несколько раз.

Итак, чтобы проиллюстрировать, модифицированную версию примера ARUP:

import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.annotations.Test;

@Test
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class TestValidation extends AbstractTestNGSpringContextTests {

    @Autowired
    private IAutowiredService autowiredService;

    @BeforeClass(dependsOnMethods={"springTestContextPrepareTestInstance"})
    public void setupParamValidation(){
        // Test class setup code with autowired classes goes here
    }

    @Test
    public void testNullParamValidation() {
        // Testing code goes here!
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top