我有一個看起來像這樣的物件:
@Service
@ConditionalOnProperty(
name="name",
havingValue = "true"
)
public class MyClass{
@Autowired(required = false)
private SomeObject someObject;
}
我的測驗檔案中有這個:
@ExtendWith({SpringExtension.class})
@ContextConfiguration(classes = {MyClass.class}, loader = AnnotationConfigContextLoader.class)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class MyTest {
MyClass myClass;
@Autowired
@ConditionalOnProperty(
name = "name",
havingValue = "true"
)
static MyClass getMyClass(){
return new MyClass();
}
}
@MockBean
static SomeObject someObject;
@BeforeAll
public void before() {
myClass = MyTest.getMyClass()
when(someObject.someFunc()).thenReturn(1);
}
}
我使用這個函式是因為在 SomeObject 上只使用 @Autowired 和 @MockBean 是因為@ConditionalOnProperty 不起作用。
問題是在 MyClass 中,someObject 為空。
uj5u.com熱心網友回復:
無需使用靜態MyClass getMyClass()
使用:
@ExtendWith({SpringExtension.class})
@ContextConfiguration(classes = {MyClass.class, SomeObject.class, loader = AnnotationConfigContextLoader.class)
@SpringBootTest(properties = "name=true")
public class MyTest{
@Autowired
MyClass
@Autowired myClass;
SomeObject someObject;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/400209.html
