Образцы для тестирования Junit со средой Spring и mongodb
Мне нужно выполнить тест junit для моего весеннего приложения, и это делается с помощью базы данных mongo. У меня нет предыдущего опыта по встраиванию тестирования junit с использованием Spring и Mongodb. Любой ответ, будет очень полезным для меня...
Спасибо с уважением.
3 ответа
Конфигурация файла pom.xml выглядит следующим образом:
<properties>
....
<junit.version>4.10</junit.version>
....
</properties>
<dependencies>
.....
<!-- Test dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version><!-- JUNIT CHANGES -->
<scope>test</scope>
</dependency>
<dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
<version>1.26</version>
<scope>test</scope>
</dependency>
<!-- Mockito --><!-- JUNIT MOCKITO DEPENDENCY ADDED -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.8.4</version>
</dependency>
<!-- Mockito -->
......
</dependencies>
<build>
....
<plugins>
......
<!-- JUNIT PLUGIN CODE ADDED-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14</version>
<configuration>
<useSystemClassLoader>false</useSystemClassLoader>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>2.14</version>
</dependency>
</dependencies>
</plugin>
<!-- END OF JUINT CODE -->
.....
</plugins>
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/junit</testSourceDirectory>
</build>....
После настройки конфигурации pom выполните код контрольного примера, как описано ниже.
- Предполагая, что вы используете IDE, например, STS или другое, просто щелкните правой кнопкой мыши соответствующий класс, выберите Junit Test Case и создайте класс по пути src/test/java.
- Для реализации для классов контроллера пружины сначала мы инициализируем все объекты, такие как значения инициализации из кода тестового примера соответствующего класса в
setUp()
метод. - Затем вызовите соответствующие методы из тестового примера и выполните соответствующую проверку утверждения junit, если соответствующий метод возвращает значения, такие как string/int/boolean и т. Д.,
Как ниже:
@Test
public void testSave() {
MessageValue messageValue = saveController.saveValue(value+"::Test", model);
Query query = new Query(Criteria.where("value").is("Test").and("_id").is(id));
SaveValue saveValueThis = template.findOne(query, Save.class);
assertEquals("Success", messageValue.getMessage());
// delete the saved value at the end of test case
testDelete();
}
Если он возвращает некоторую страницу пользовательского интерфейса, которая перенаправлена на другой экран, то проверьте, как показано ниже,
mockMvc = MockMvcBuilders.standaloneSetup(yourController).build();
mockMvc.perform(get("/request/url").accept(MediaType.ALL))
.andExpect(status().isOk());
- Наконец в тестовом случае
tearDown()
Метод сброса инициализированных значений.
Я использую шаблон Spring mongo в приложении Spring MVC и JUnit 4.8.2 для модульных тестов. Просто создайте bean-компонент для вашего mongoTemplate и используйте Autowired, чтобы внедрить его в ваши классы. Что касается тестов, выполните следующие действия:
1. Создайте новый контрольный пример JUnit (щелкните правой кнопкой мыши свой класс в Package Explorer, затем new->JUnit Test Case). Он создаст тестовый метод для каждого метода вашего класса, который вы укажете.
2.Теперь у вас будут ваши тесты в src/test/java, а ваши ресурсы - в src/test/resources. Лучше, если вы создадите весенний конфигурационный файл только для тестов, чтобы вы могли направить тесты на локальный экземпляр mongodb, а ваше приложение, возможно, на экземпляр mongoDB для разработки. Поэтому создайте файл конфигурации в src/test/resources и назовите его testSpringConfig.xml или что-то еще и создайте bean-компонент там:
<mongo:db-factory dbname="myDB" host="localhost"
username="myDbUser" password="myPass"/>
<beans:bean id="mongoTemplate"
class="org.springframework.data.mongodb.core.MongoTemplate">
<beans:constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
</beans:bean>
<beans:bean id="mongoTemplateLibrary"
class="org.springframework.data.mongodb.core.MongoTemplate">
<beans:constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
</beans:bean>
3.В своем тестовом классе используйте аннотации для ссылки на ваш файл конфигурации:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/testSpringConfig.xml"})
public class MyDaoTest {
4. После того, как у вас настроен тестовый класс, введите шаблон Монго
@Autowired
@Qualifier("mongoTemplate")
private MongoTemplate mongoTemplate;
5. Теперь вы можете использовать его для вставки / удаления / поиска / обновления непосредственно в mongo (хотя это будет интеграционный тест, а не модульный тест). Например, вы можете удалить объекты, вставленные в ваши тесты, используя метод Tear Down.:
@After
public void tearDown() {
mongoTemplate.remove(myObject);
}
Я бы начал с просмотра документации по JUnit, в частности, я бы начал с утверждений. При тестировании с использованием инфраструктуры внедрения зависимостей (например, Spring) необходима основа для моделирования. Проверьте EasyMock или Mockito.