首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在4.1.4中使用Fongo进行单元测试失败-在3.1.4中工作

无法在4.1.4中使用Fongo进行单元测试失败-在3.1.4中工作
EN

Stack Overflow用户
提问于 2015-02-03 23:20:59
回答 1查看 973关注 0票数 0

https://github.com/sanjuthomas/spring-data-mongodb

为了理解如何使用fongo对mongo应用程序进行单元测试,我尝试了几个例子,比如上面的例子。所有的例子都能用--包括上面的例子,但是当我把pom升级到spring boot支持的最新版本时,所有的例子都失败了。似乎不再为测试加载应用程序上下文。这个单元测试功能被破坏了吗?或者我需要修改代码吗?

下面是在Spring 3中运行失败的代码-现在规则失败,声明上下文中不存在mongo实例:

代码语言:javascript
复制
package com.ourownjava.spring.data.mongo.repository;

import static com.lordofthejars.nosqlunit.mongodb.MongoDbRule.MongoDbRuleBuilder.newMongoDbRule;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import java.util.List;

import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.foursquare.fongo.Fongo;
import com.lordofthejars.nosqlunit.annotation.ShouldMatchDataSet;
import com.lordofthejars.nosqlunit.annotation.UsingDataSet;
import com.lordofthejars.nosqlunit.mongodb.MongoDbRule;
import com.mongodb.Mongo;
import com.ourownjava.spring.data.mongo.model.Trade;

/**
 * Spring Data MongoDB Repository Unit testcase.
 * 
 * @author ourownjava.com
 *
 */

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class TestTradeRepository {

    @Autowired
    private ApplicationContext applicationContext;

    @Rule
    public MongoDbRule mongoDbRule = newMongoDbRule().defaultSpringMongoDb(
            "trade-db");

    @Autowired
    private TradeRepository tradeRepository;


    @Test
    @ShouldMatchDataSet(location = "/testData/trade-t1.json")
    public void shouldSaveTrade(){
        tradeRepository.save(createTrade());
    }

    @Test
    @UsingDataSet(locations = {"/testData/trade-t1.json"})
    public void shouldFindByTraderId(){
        final List<Trade> trades = tradeRepository.findByTraderId("papjac");
        assertNotNull(trades);
        assertTrue(trades.size() > 0);
        assertEquals("papjac", trades.get(0).getTraderId());
    }

    @Test
    @UsingDataSet(locations = {"/testData/trade-t1.json"})
    public void shouldFindByExchangeCode(){
        final List<Trade> trades = tradeRepository.findByExchangeCode("NYSE");
        assertNotNull(trades);
        assertTrue(trades.size() > 0);
        assertEquals("NYSE", trades.get(0).getExchangeCode());
    }


    private Trade createTrade(){
        final Trade trade = new Trade();
        trade.setId("t1");
        trade.setTraderId("papjac");
        trade.setExchangeCode("NYSE");
        trade.setValue(90.3);
        return trade;
    }



    @Configuration
    @EnableMongoRepositories
    @ComponentScan(basePackageClasses = { TradeRepository.class })
    static class MongoConfiguration extends AbstractMongoConfiguration {

        @Override
        protected String getDatabaseName() {
            return "trade-db";
        }

        @Override
        public Mongo mongo() {
            return new Fongo("trade-test").getMongo();
        }

        @Override
        protected String getMappingBasePackage() {
            return "com.ourownjava.spring.data.mongo";
        }
    }

}
EN

回答 1

Stack Overflow用户

发布于 2015-04-07 20:34:50

对于mongo(),您必须使用Annotation @Bean

代码语言:javascript
复制
@Bean 
@Override
public Mongo mongo() {
            return new Fongo("trade-test").getMongo();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28302453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档