请让我知道我们如何在junit中测试下面的代码。ConfigProperty正在从www.example.com文件中读取值application.property。现在我必须写一个单元测试用例,我可以写请帮助我。
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonTypeName("ProcessMessageDedup")
public class ProcessMessageDedup extends ProcessMessage {
@ConfigProperty(name = "dedupAppName", defaultValue = "dedup")
public String appName;
@ConfigProperty(name = "dedupProcessURL")
public String processURL;
@ConfigProperty(name = "callbackURL")
public String callbackURL;
@ConfigProperty(name = "dedupCallbackEndpoint")
public String callbackEndpoint;
@ConfigProperty(name = "callbackUser")
public String callbackUser;
@ConfigProperty(name = "callbackPass")
public String callbackPass;
public ProcessMessageDedup() {
setProperties();
}
private void setProperties() {
appName = ConfigProvider.getConfig().getValue("dedupAppName", String.class);
processURL = ConfigProvider.getConfig().getValue("dedupProcessURL", String.class);
callbackURL = ConfigProvider.getConfig().getValue("callbackURL", String.class);
callbackEndpoint = ConfigProvider.getConfig().getValue("dedupCallbackEndpoint", String.class);
callbackUser = ConfigProvider.getConfig().getValue("callbackUser", String.class);
callbackPass = ConfigProvider.getConfig().getValue("callbackPass", String.class);
}
public void process() throws Exception {
try {
logger.info("Processing " + appName + " tid: " + tid);
logger.info("Processing " + appName + " queryparams: " + queryParams.toString());
setProperties();
new CallbackUtils().callProcess(this.getData(), this.processURL, tid, fileId, "", queryParams, appName,
callbackURL, callbackEndpoint, callbackUser, callbackPass);
} catch (Exception e) {
logger.error(e.getMessage());
throw e;
} finally {
this.deleteFile();
}
}
@Override
public void callback() {
// TODO Auto-generated method stub
}
}
请让我知道我们如何编写这个类的单元测试。
2条答案
按热度按时间uujelgoq1#
首先,您使用的是什么框架,Spring,......?如果是Spring,您需要查看
@ConfigurationProperties
和@Value
。要在Spring中测试配置参数,您应该使用
ReflectionTestUtils
,请参阅此答案以了解更多信息:https://stackoverflow.com/a/17355595/3845362第二,从你的问题中还不清楚你到底想测试什么。
application.properties
中正确值的框架加载?ProcessMessageDedup
类内部的逻辑?顺便说一句,你的字段是公共的,所以即使在你初始化你的类之后,你也可以修改如下:
klr1opcd2#
@ConfigProperty
旨在由CDI容器用于注入配置值。简单的JUnit测试不足以注入这样的值。您需要一个处理注入部分的CDI容器。您可以使用Weld-JUnit 5:https://github.com/weld/weld-testing/tree/master/junit5
或者在本例中,由于您使用的是Quarkus,因此您使用
@QuarkusTest
注解测试类,Quarkus将在测试类中为您处理注入部分:https://quarkus.io/guides/getting-started-testing