我的项目运行在micronaut 3上,我正在尝试使用Spock框架运行测试用例。以下是我为测试用例添加的依赖项和插件:
plugins {
id("groovy")
// ....
}
dependencies {
/* other dependencies */
testImplementation "io.micronaut.test:micronaut-test-spock"
testImplementation("org.spockframework:spock-core") {
exclude group: "org.codehaus.groovy", module: "groovy-all"
}
testAnnotationProcessor "io.micronaut:micronaut-inject-java"
testImplementation "io.micronaut:micronaut-inject-groovy"
testImplementation "io.micronaut:micronaut-inject-java"
}
我试图为其创建MockBean的类如下所示:
@Getter
@Setter
@ToString
@RequestScope
public class RequestAttributes {
private String requestPath;
private boolean setAsDefault;
private String customerNo;
private ChannelType channelType;
private Double apiVersion;
public RequestAttributes() {
}
}
我正在创建这样的bean:
import jakarta.inject.Inject
@MicronautTest(propertySources = "application.yml")
class TestCase extends Specification {
@Inject
ClassToBeTested classToBeTested;
@Inject
RequestAttributes requestAttributes
.... Test cases
@MockBean(RequestAttributes)
RequestAttributes mockRequestAttributes() {
Mock(RequestAttributes)
}
}
现在,当控件进入
ClassToBeTested
,发现该bean为null。bean的声明如下:
import jakarta.inject.Inject
class ClassToBeTested {
@Inject
RequestAttributes requestAttributes;
}
我不确定为什么会发生这种情况,我还想补充一点,当我用micronaut 1.3运行spock测试用例时,它起作用了,我正在使用
javax.inject
用于注射豆子的包装。如果有问题,有人能帮我吗
jakarta.inject
包裹