我需要为我的spring应用程序执行junit测试,并且使用mongo数据库完成测试。 我以前没有用spring和mongodb嵌入junit测试的经验。 任何答复,将对我很有帮助...使用Spring框架和mongodb进行Junit测试的示例
感谢致以问候。
我需要为我的spring应用程序执行junit测试,并且使用mongo数据库完成测试。 我以前没有用spring和mongodb嵌入junit测试的经验。 任何答复,将对我很有帮助...使用Spring框架和mongodb进行Junit测试的示例
感谢致以问候。
我会先看看JUnit文档,具体来说,我会从Assertions开始。当使用依赖注入框架(例如Spring)进行测试时,模拟框架是必不可少的。检查出EasyMock或Mockito。
我在Spring MVC应用程序中使用Spring mongo模板,在单元测试中使用JUnit 4.8.2。 只需为您的mongoTemplate创建一个bean并使用Autowired将其注入到您的类中。至于测试,请按照下列步骤操作:
1.创建一个新的JUnit测试用例(右键单击Package Explorer中的类,然后单击新建 - > JUnit测试用例)。它将为您指定的每个类的方法创建一个测试方法。
2.Now你有你在的src/test/java下测试和尤尔在的src /测试/资源资源。最好是为测试创建一个spring配置文件,以便您可以将测试指向本地mongodb实例,将您的应用程序指向Development mongoDB实例。因此,在SRC创建一个配置文件/测试/资源并将其命名为testSpringConfig.xml或任何与创造有豆:
<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.In您的测试类,使用注释引用您的配置文件:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/testSpringConfig.xml"})
public class MyDaoTest {
4.一旦你有你的测试类设置,注入蒙戈模板
@Autowired
@Qualifier("mongoTemplate")
private MongoTemplate mongoTemplate;
5.现在你可以用它直接插入/删除/发现/更新到mongo(尽管这可能是一个集成测试而不是单元测试) 例如,你可以使用Tear来移除你在测试中插入的对象向下方法:
@After
public void tearDown() {
mongoTemplate.remove(myObject);
}
嗨AntonioOtero,谢谢你的回复。让我试试这个,让你知道更新很快。 – 2013-04-09 04:50:54
@ lk.annamalai它是否适合你? – AntonioOtero 2013-06-25 15:48:50
请参阅我使用的以下信息。 – 2013-09-24 03:47:57
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 cofigurations后,执行测试用例代码通过以下步骤
setUp()
方法中相应类的测试用例代码的初始化值。象下面这样:
@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();
}
如果返回一些UI页面是重定向到其他屏幕,然后检查如下图所示,
mockMvc = MockMvcBuilders.standaloneSetup(yourController).build();
mockMvc.perform(get("/request/url").accept(MediaType.ALL))
.andExpect(status().isOk());
tearDown()
方法重置初始化值。
感谢Steven对于回复,我从未做过像自动化那样的任何测试。仍然我只做了手动测试。其实我正在冲浪的一些例子在春季框架体系结构中用Mongodatabase或任何数据库进行junit测试。如何开始实施junit测试,如何检查控制器/服务层,如何为添加/编辑/删除值等进行数据库测试, – 2013-04-04 06:06:05
@ lk.annamalai如果答案对您有帮助,我会很感激您将其标记为已接受。这会帮助我和其他人有类似的问题。谢谢 – AntonioOtero 2013-06-27 13:58:29