xml configuration of integration test with spring data mongo

1. junit test like below

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/spring/test-mongo-setup.xml"})
public class AlarmLogDataHandlerTest extends AbstractDbDataTest {

    @Autowired
    private AlarmRepository alarmRepository;
    @Autowired
    private AlarmDetailsRepository alarmDetailsRepository;
    private AlarmErrorDataHandler handler;
    private String inverterId = "inverter1";

    @Before
    public void init() {
        setCurrentMillisSystem();
        handler = new AlarmErrorDataHandler();
        ReflectionTestUtils.setField(handler, "alarmRepository", alarmRepository);
    }

    @After
    public void cleanData() {
        setCurrentMillisSystem();
        alarmRepository.deleteAll();
        alarmDetailsRepository.deleteAll();
    }

    @Test
    public void whenAlarmIsNewThenSaveAlarmLogsAndAlarmDetails() {
        // given
        String errorType = ErrorCode.L1.getErrorType();
        int errorCodeL1_value1 = 2;
        AlarmLogs logs = buildFullAlarmLogs(errorType, errorCodeL1_value1);

        // when
        handler.saveAlarmLogs(logs);

        // then
        Iterable<AlarmLogs> logsList = alarmRepository.findAll();
        assertThat(logsList.iterator().hasNext(), equalTo(true));
        AlarmLogs dbLogs = logsList.iterator().next();
        assertThat(dbLogs.getVersion(), equalTo(0L));
        assertThat(dbLogs.getErrorType(), equalTo(errorType));
        assertThat(dbLogs.getErrorValue(), equalTo(errorCodeL1_value1));
        assertThat(dbLogs.getAlarmDetails(), notNullValue());

        Iterable<AlarmDetails> alarmDetails = alarmDetailsRepository.findAll();
        assertThat(Lists.newArrayList(alarmDetails), hasSize(1));
    }
}

2 xml configuration

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mongo="http://www.springframework.org/schema/data/mongo"
    xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
          http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.3.xsd
          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

	<mongo:auditing/>
	<bean name="fongo" class="com.github.fakemongo.Fongo">
		<constructor-arg value="InMemoryMongo"/>
	</bean>
	<bean id="mongo" factory-bean="fongo" factory-method="getMongo"/>

	<mongo:db-factory id="mongoDbFactory" mongo-ref="mongo"/>

	<!-- localhost settings for mongo -->
	<!--<mongo:db-factory id="mongoDbFactory" /> -->

	<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
		<constructor-arg ref="mongoDbFactory"/>
	</bean>
	
	<mongo:repositories base-package="com.eifesun.monitor.web.repository" repository-impl-postfix="CustomImpl"/>
	
	<bean class="com.eifesun.monitor.web.model.mongodb.CascadingMongoEventListener" />
</beans>

notice that: we use "com.github.fakemongo.Fongo", and "InMemoryMongo" for test.

猜你喜欢

转载自sunxboy.iteye.com/blog/2035758