Поскольку мы сейчас разрабатываем Spring-проект, то, безусловно, будем использовать различные функции Spring Framework. Эти функции действительно полезны и могут значительно повысить нашу эффективность разработки. Поэтому естественно возникает желание использовать возможности Spring Framework для повышения эффективности разработки тестового кода. В этой части мы рассмотрим, как использовать инструменты тестирования, предоставляемые Spring, для проведения тестов.
Исходный код см. FooServiceImplTest:
@ContextConfiguration(classes = FooServiceImpl.class)
public class FooServiceImplTest extends AbstractTestNGSpringContextTests {
@Autowired
private FooService foo;
@Test
public void testPlusCount() throws Exception {
assertEquals(foo.getCount(), 0);
foo.plusCount();
assertEquals(foo.getCount(), 1);
}
}
В приведённом выше исходном коде следует обратить внимание на три момента:
FooServiceImpl
.FooServiceImpl
является @Component
.Все эти три пункта необходимы.
В этом примере мы поместим @Configuration
в качестве nested static class в тестовом классе. Согласно документации @ContextConfiguration, он будет искать nested static @Configuration class в тестовом классе по умолчанию и использовать его для импорта компонентов.
Исходный код см. FooServiceImplTest:
@ContextConfiguration
public class FooServiceImplTest extends AbstractTestNGSpringContextTests {
@Autowired
private FooService foo;
@Test
public void testPlusCount() throws Exception {
assertEquals(foo.getCount(), 0);
foo.plusCount();
assertEquals(foo.getCount(), 1);
}
static class Config {
@Configuration
@Import(FooServiceImpl.class)
}
}
В данном примере мы разместим @Configuration
во внешнем файле и позволим @ContextConfiguration загрузить его.
Исходный код см. Config:
@Configuration
@Import(FooServiceImpl.class)
public class Config {
}
@ContextConfiguration(classes = Config.class)
public class FooServiceImplTest extends AbstractTestNGSpringContextTests {
@Autowired
private FooService foo;
@Test
public void testPlusCount() throws Exception {
assertEquals(foo.getCount(), 0);
foo.plusCount();
assertEquals(foo.getCount(), 1);
}
}
Следует отметить, что если @Configuration
предназначен только для использования в определённом тестовом классе, то размещение его во внешнем файле может быть не лучшим решением, поскольку существует вероятность того, что он будет обнаружен @ComponentScan
, что может привести к некоторым странным проблемам.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )