Весенняя зависимость впрыска с тестированием
Вопрос
Весенняя поддержка 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!
}
}