1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/chanjarster-spring-test-examples

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
chapter_1_s2_spring_testing.md 5.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 27.11.2024 23:55 3b54fb2

Глава 1: Основные способы использования — инструменты тестирования Spring

Поскольку мы сейчас разрабатываем Spring-проект, то, безусловно, будем использовать различные функции Spring Framework. Эти функции действительно полезны и могут значительно повысить нашу эффективность разработки. Поэтому естественно возникает желание использовать возможности Spring Framework для повышения эффективности разработки тестового кода. В этой части мы рассмотрим, как использовать инструменты тестирования, предоставляемые Spring, для проведения тестов.

Пример 1

Исходный код см. 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);
  }

}

В приведённом выше исходном коде следует обратить внимание на три момента:

  • Тестовый класс наследуется от AbstractTestNGSpringContextTests, иначе тестовый класс не сможет запустить контейнер Spring.
  • Используется [@ContextConfiguration][javadoc-ContextConfiguration] для загрузки тестируемого компонента: FooServiceImpl.
  • FooServiceImpl является @Component.

Все эти три пункта необходимы.

Пример 2

В этом примере мы поместим @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)
  }

}

Пример 3

В данном примере мы разместим @Configuration во внешнем файле и позволим @ContextConfiguration загрузить его.

Исходный код см. Config:

@Configuration
@Import(FooServiceImpl.class)
public class Config {
}

FooServiceImplTest:

@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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/chanjarster-spring-test-examples.git
git@api.gitlife.ru:oschina-mirror/chanjarster-spring-test-examples.git
oschina-mirror
chanjarster-spring-test-examples
chanjarster-spring-test-examples
master