当前位置: 首页 > 知识库问答 >
问题:

Spring转换服务未正确初始化以进行测试

丌官寒
2023-03-14

我正在使用spring Boot1.5.9编写一个小型rest服务器。我刚开始使用初始化代码,就被这种奇怪的行为卡住了。

我有个小测试-

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestMongo {

    @Autowired
    private MongoOperations mongoOps; 

    @Test
    public void testMongoConnection() {
        assertFalse(mongoOps.collectionExists("test"));
    }
}

最初,Application.Properties被忽略。在我添加了@SpringBootTest注释之后,application.properties被读取,但开始出现以下错误。

配置bean如下所示-

@Configuration
@EnableConfigurationProperties(MongoProperties.class)
public class SpringConfiguration {

    private MongoProperties mongoPropertiesConfiguration;

    public MongoProperties getMongoConfiguration() {
        return mongoPropertiesConfiguration;
    }


    @Autowired
    public void setMongoConfiguration(MongoProperties mongoConfiguration) {
        this.mongoPropertiesConfiguration = mongoConfiguration;
    }



    public @Bean MongoClient mongoClient() {
        return new MongoClient(mongoPropertiesConfiguration.getHost(), mongoPropertiesConfiguration.getPort());
    }

    public @Bean MongoDbFactory mongoDbFactory() {
        return new SimpleMongoDbFactory(mongoClient(), mongoPropertiesConfiguration.getDb());
    }

    public @Bean MongoOperations mongoOperations() {
        return new MongoTemplate(mongoDbFactory());
    }
}

而且

@ConfigurationProperties(prefix="mongo")
public class MongoProperties {

    private String host;
    private Integer port;
    private String db;

    public String getHost() {
        return host;
    }
    public void setHost(String host) {
        this.host = host;
    }
    public Integer getPort() {
        return port;
    }
    public void setPort(Integer port) {
        this.port = port;
    }
    public String getDb() {
        return db;
    }
    public void setDb(String db) {
        this.db = db;
    }

}

我确实使用@EnableAutoConfiguration注释而不是@SpringBootTest运行了测试。但这只对其中一个测试有效。我认为测试在哪个包中很重要,我认为@EnableAutoConfiguration可能不是正确的方法。

mongo.host=localhost
mongo.port=${mongo.port:27017}
mongo.db=${mongo.db:synctool}

共有1个答案

卢伟志
2023-03-14

我不知道你的语法

mongo.port=${mongo.port:27017}

spring尝试将${Mongo.Port:27017}转换为MongoProperties.Port整数属性

 类似资料:
  • 问题内容: 我正在设置用于学习JavaEE7中CDI的基本环境。我有以下代码可以启动。只是启动和关闭。 我正在控制台上关注。 有问题的线是。这仅表示依赖注入将不起作用。但是我不确定是什么问题。我已经添加了。我什至没有达到初始化对象的目的,那为什么会出现这个问题呢? Weld的官方文档还给出了阅读此答案后得到的相同代码。“ Antonio Goncalves”撰写的“ Beginning Java

  • 我们的项目中有一个不可替代代币状态和不可替代代币合约的自定义实现。我们正在使用下面的代码来发行我们的自定义不可替代代币。 当试图将上面获得的事务构建器转换为有线事务时(< code > builder . towiretransaction(service hub);)我们在下面的堆栈跟踪中得到一个错误。

  • 问题内容: 问这个问题似乎很愚蠢,但我很困惑。我提到了配置Log4j属性,但这似乎无济于事。 我已经编写了一个简单的Web服务HelloWorld。而在运行它时,我得到这样的错误: log4j:WARN找不到记录器的附加程序(org.apache.axis.transport.http.AxisServlet)。log4j:WARN请正确初始化log4j系统。 我不确定为什么会这样。 我正在使用E

  • 问题内容: 将log4j添加到我的应用程序后,每次执行我的应用程序时,都会得到以下输出: 看来这意味着缺少配置文件。此配置文件应位于何处,什么是良好的入门内容? 我使用纯Java开发桌面应用程序。因此没有网络服务器等… 问题答案: 默认情况下,在上查找名为或的文件。 您可以按照此处所述通过设置系统属性来控制它用来初始化自身的文件(查找“默认初始化过程”部分)。 例如: 将导致在类路径上查找名为的文

  • 问题内容: 我希望您能从该示例中了解到我想要做什么。我该如何在Go中执行此操作? 问题答案: (点击播放)