看来我得详细说明一下
@Autowired
我刚试过。这很管用
package com.acme;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import static org.assertj.core.api.Assertions.assertThat;
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = ConfigurationTest.Config.class)
public class ConfigurationTest {
@Test
void explicitContextTest() {
AnnotationConfigApplicationContext applicationContext =
new AnnotationConfigApplicationContext(Config.class);
assertThat(applicationContext.getBean(Skeleton.class)).isNotNull();
}
@Test
void contextConfigInjectionTest(@Autowired Skeleton skeleton) {
assertThat(skeleton).isNotNull();
}
@Configuration
static class Config {
@Bean
Skeleton skeleton() {
return new SkeletonImpl();
}
}
interface Skeleton {
}
static class SkeletonImpl implements Skeleton {
}
}
根据Spring扩展实现,Spring期望
@自动连线
@Qualifier
/
@Value
出席。只有这样,spring才能根据
ApplicationContext
https://github.com/spring-projects/spring-framework/blob/0ad9349d84a725dc37499bcb0ed2aad0de770c73/spring-test/src/main/java/org/springframework/test/context/junit/jupiter/SpringExtension.java#L156-L163