我正在编写一个库,以提供在我所使用的多个不同的Spring应用程序之间共享的一些功能。
我想做一些类似于许多Spring库所提供的自动配置的事情。或者其他一些简单的声明性方法,将我的库与使用它的应用程序的ApplicationContext集成起来。
我找到了一些解释自动配置如何工作的资源。我能解决上面的问题。
但是,我还没有找到任何好的例子来说明如何将测试作为库测试套件的一部分进行测试,这些测试套件适合与Spring应用程序集成。理想情况下,我会直接在库的测试中启动一个简单的Spring应用程序,仅仅是为了测试,向它添加正确的注释,然后能够断言正确的bean被配置了。
我尝试过创建一个TestApplication类来完成这个任务,并使用SpringBootTest注释编写集成测试,但是在测试开始之前,TestApplication从未启动过。
我能做些什么来启动这样一个简单的应用程序来测试我的库呢?我的测试是用Spock和Spock-Spring编写的,以防与其他测试框架相比发生变化。
发布于 2017-03-29 07:02:43
在启动主spring应用程序/测试时,应该自动选择自动配置,并且所有bean都将在上下文中注册。它们将用于自动配线,并遵循您的条件和init命令.
总之,请确保有一个由@Configuration类注释的自动配置和一个导入@Configuration注释的配置类的@Import (在这些类中,定义了带有@Bean注释的方法的bean)。还要确保您创建了一个包含spring.factories类的auto-configuration文件,并删除了spring引导maven插件(为了使打包正确)。
另外,确保您的auto-configuration项目是而不是由@SpringBootApplication、@EnableAutoConfiguration、@ComponentScan或其他只需要在主春季引导项目中的春季引导注释(每个堆栈中应该有一个)注释的。
另见以下条款:
Spring引导是基于许多预先制定的自动配置父项目。您应该已经熟悉了spring启动启动项目。
通过执行以下简单步骤,您可以轻松地创建自己的初学者项目:
@Configuration类来定义默认bean。您应该尽可能多地使用外部属性以允许自定义,并尝试使用自动配置助手注释,如@AutoConfigureBefore、@AutoConfigureAfter、@ConditionalOnBean、@ConditionalOnMissingBean等。您可以在正式文档条件注释中找到关于每个注释的更详细信息。@Configuration类的自动配置文件/文件。spring.factories的文件,并将其放在src/main/resources/META-INF中。spring.factories中,使用@Configuration类的逗号分隔值设置org.springframework.boot.autoconfigure.EnableAutoConfiguration属性:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=
com.mycorp.libx.autoconfigure.LibXAutoConfiguration,
使用这种方法的com.mycorp.libx.autoconfigure.LibXWebAutoConfiguration,您可以创建自己的自动配置类,这些类将由spring引导来选择。Spring自动扫描spring.factories文件的所有maven/gradle依赖项,如果找到一个,它会将其中指定的所有@Configuration类添加到其自动配置过程中。确保您的auto-configuration初学者项目不包含spring boot maven plugin,因为它将将项目打包为可执行的JAR,并且不会按预期由类路径加载-- spring引导将无法找到您的spring.factories,也不会加载您的配置。
https://stackoverflow.com/questions/43078136
复制相似问题