我有一个@SpringBootTest
,它测试@ConfigurationProperties
的加载及其方法。它位于test
源集中。
然后,在itest
中,我进行了一个集成测试,该测试使用Wiremock(发送请求并使用存根作为响应等)
现在,当我运行gradle test
时,第一个测试失败,并说:
[ENV = local] [productName = app-gateway-api] [2019-10-22T16:18:30.994Z] [ERROR] [MSG = [Test worker] osboot.SpringApplication-应用程序运行失败org.springframework .beans.factory.UnsatisfiedDependencyException:创建文件[E:\ coding \ code \ app \ build \ classes \ java \ main \ com \ app \ controller \ MyController> .class]中定义的名称为'myController'的bean时出错。通过构造函数表示 参数0;嵌套异常为 org.springframework.beans.factory.BeanCreationException:错误 创建名称为“ proxyService”的bean:自动接线的注入 依赖失败;嵌套异常为 java.lang.IllegalArgumentException:无法解析占位符 价值'wiremock.server.port' “ http://localhost:$ {wiremock.server.port} /发送”
在某些外部属性中使用。该值将在itest
中使用,但不会在test
中使用。但是上下文始终会加载它。
在其他使用它的项目中,没有问题。但是,似乎它正在加载所有类,并且找不到Wiremock并创建服务器。
问题测试:
@SpringBootTest
public class MapperLookupTest {
...
}
Wiremock依赖项已经具有compile
范围:
compile('com.github.tomakehurst:wiremock-jre8-standalone:2.21.0')
compile("org.springframework.cloud:spring-cloud-starter-contract-stub-runner")
我尝试仅使用@SpringBootTest(classes = {...})
加载必要的类,但这太冗长了。
那么,有什么简单的方法告诉上下文加载Wiremock?
答案 0 :(得分:1)
只需将默认值添加到您的占位符:
${wiremock.server.port:defaultValue}
答案 1 :(得分:0)
最后,我决定不尊重@Cwrwhaf,对不起..因为我不想对生产代码产生负面影响;我只想通过测试,任何更改都应仅限于测试本身的范围。
我做到了:
import pandas as pd
df = pd.DataFrame({'Age': [30, 40, 30, 40, 30, 30, 20, 25],
'Height': [120, 162, 120, 120, 120, 72, 120, 81]},
index=['Jane', 'Jane', 'Aaron', 'Penelope', 'Jaane', 'Nicky',
'Armour', 'Ponting'])
line = pd.DataFrame({"Age": 33, "Height": 130}, index=[2])
df2 = pd.concat([df.iloc[:2], line, df.iloc[2:]]).reset_index(drop=True)
df2
我知道,这不是一个完美的答案,但与更改Wiremock的全局设置相比,其影响较小。