【发布时间】:2018-06-14 15:11:51
【问题描述】:
我正在进行SimpleTest:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SimpleTestConfig.class)
public class SimpleTest {
@Test
public void test() {
assertThat(true);
}
}
以及此测试的配置:
@SpringBootApplication
@ComponentScan(basePackageClasses = {
SimpleTestConfig.class,
Application.class
},
excludeFilters = @ComponentScan.Filter(
type = FilterType.ASSIGNABLE_TYPE,
classes = Starter.class))
public class SimpleTestConfig {
}
我正在尝试排除 Starter 类
package application.starters;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class Starter {
@PostConstruct
public void init(){
System.out.println("initializing");
}
}
Application 类看起来像这样:
package application;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import static org.springframework.boot.SpringApplication.run;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
run(Application.class, args);
}
}
但出于一个非常奇怪的原因,Starter 类仍在初始化。
谁能解释为什么ComponentScan excludeFilters 不排除我的Starter 类?
【问题讨论】:
-
要么我错过了 SimpleTestConfig 中的主要(方法),要么你没有很好地解释你想从哪里排除
-
在你的
SimpleTestConfig类上用@Configuration替换@SpringBootApplication。也希望它在你的 src/main 文件夹中,如果你正在创建一个测试目的配置(在 src/test 文件夹中),请改用@TestConfiguration注释。
标签: java spring spring-boot spring-test