当我"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配置@ContextConfiguration(类= myConfig.class)

如果使用XML配置@ContextConfiguration("类路径:com/my/app/resources/my-test-config.xml "

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

默认的类路径将是您的项目设置使用的

更多信息请访问:http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/

这取决于,在eclipse中它运行他们的jUnit插件。所有的弹簧魔术都是由于特定的跑步者,而不是jUnit本身。所有spring细节都在上下文文件中定义,但可以被覆盖。所以如果你定义了一个上下文文件将被使用,如果没有,那么将使用一些默认值

相关内容

  • 没有找到相关文章

最新更新