我正在尝试为我的示例项目编写一个 junit 测试,但不知道如何访问 jUnit 测试中的 ApplicationContext:
这是该项目的主要类:
public static void main(String[] args)
{
// in this setup, both the main(String[]) method and the JUnit method both specify that
ApplicationContext context = new AnnotationConfigApplicationContext( HelloWorldConfiguration.class );
MessageService mService = context.getBean(MessageService.class);
HelloWorld helloWorld = context.getBean(HelloWorld.class);
/**
* Displaying default messgae
*/
LOGGER.debug("Message from HelloWorld Bean: " + helloWorld.getMessage());
/**
* Saving Message to database
*/
Message message = new Message();
message.setMessage(helloWorld.getMessage());
mService.SaveMessage(message);
/**
* Settting new message in bean
*/
helloWorld.setMessage("I am in Staten Island, New York");
LOGGER.debug("Message from HelloWorld Bean: " + helloWorld.getMessage());
/**
* Saving Message in database.
*/
message.setMessage(helloWorld.getMessage());
mService.SaveMessage(message);
/**
* Getting messages from database
* - display number of message(s)
* - display each message in database
*/
List<Message> myList = mService.listMessages();
LOGGER.debug("You Have " + myList.size() + " Message(s) In The Database");
for (Message i : myList)
{
LOGGER.debug("Message: ID: " + i.getId() + ", Message: " + i.getMessage() + ".");
}
}
现在这是 junit 测试:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = HelloWorldConfiguration.class)
public class TestApp {
@Test
public void testBean() {
HelloWorld helloWorld = context.getBean(HelloWorld.class);
helloWorld.setMessage("I Love Dogs");
Assert.assertEquals(helloWorld.getMessage(), "I Love Dogs");
}
}
您可以使用自动装配。请注意,大多数时候您对应用程序上下文本身并不感兴趣,而是对与其关联的一个或多个 bean 感兴趣。下面是两个本质上做同样事情的例子:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = HelloWorldConfiguration.class)
public class TestApp {
@Autowired
HelloWorld helloWorld;
@Test
public void testBean() {
helloWorld.setMessage(...);
// asserts, etc.
}
}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = HelloWorldConfiguration.class)
public class TestApp {
@Autowired
ApplicationContext applicationContext;
HelloWorld helloWorld;
@Before
public void setUp() {
helloWorld = context.getBean(HelloWorld.class);
}
@Test
public void testBean() {
helloWorld.setMessage(...);
// asserts, etc.
}
}
See the 参考文档 http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/testing.html#testcontext-ctx-management了解详情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)