繁体   English   中英

当我“将 Spring 作为 JUnit 测试运行”时,内部会发生什么?

[英]What happens internally when I "Run Spring as JUnit Test"?

即使我的服务器没有运行,当我作为 JUnit 测试运行时,我仍然可以加载 spring bean 和属性文件。

这是怎么回事?

是否创建了编译我的测试类的 JVM 实例?

我也没有定义任何类路径。

默认的类路径是什么? 它怎么能找到我的春豆?

如果我想为属性文件提供相对于哪个文件夹的位置,应该给出它的相对路径?

您的 Spring bean 不依赖于您的服务器,它们在您的应用程序执行时被初始化,例如通过主方法或正在运行的单元测试。

Spring 的工作方式是,您将拥有一个定义 bean 的应用程序上下文,可能定义为:

Java 类 - 如果在 Java 中定义,该类将有一个 @Configuration 注释,并且您的 bean 将被标记为 @Bean 注释

Xml 文件 - 文件中的条目可能类似于

<bean id="myBean" class="com.my.package.MyBean">
     <constructor-arg ref="anotherBean"/>
</bean>

注意:bean 也可以通过注解来定义。

良好实践规定,理想情况下您应该有 2 个配置,一个用于服务 bean 等的应用程序和一个定义数据源的基础结构配置,该配置可能因您的环境而异。 根据环境更改基础架构设置的能力是您能够在本地以及服务器上运行测试的关键原因。 您可能会发现您为基础结构配置定义了配置文件,这意味着您可以满足在不同环境中运行的测试,例如您的本地计算机上没有 SQL 服务器,因此您将使用内存数据库。

当应用程序执行时,在这种情况下通过单元测试,它将访问您的 spring bean 定义并开始实例化您的 bean(您可能会注意到在测试开始时发生这种情况时有轻微的延迟)一旦完成,您的应用程序是那么就可以开始运行您的测试了。

在您的测试类的顶部,您可能有一些注释:@RunWith(SpringJUnit4ClassRunner.class) - 这使得测试类在 Spring 支持下运行

如果使用 java config @ContextConfiguration(classes=myConfig.class)

如果使用 xml 配置 @ContextConfiguration(“classpath:com/my/app/resources/my-test-config.xml”

没有看到任何代码示例,很难完全理解你的问题,但简而言之,你的类上的 @ContextConfiguration 注释会告诉你的类它从哪里获取你的 bean,但你可能也有定义你的数据源的配置文件.

默认类路径将是您的项目设置使用的任何内容

更多信息可以在: http : //docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/

这取决于,在 Eclipse 中它运行他们的 jUnit 插件。 所有 springs 魔法都是由于特定的跑步者,而不是 jUnit 本身。 所有 spring 细节都在上下文文件中定义,但可以被覆盖。 因此,如果您定义将使用的上下文文件,如果没有,则将使用一些默认值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM