[
https://issues.jboss.org/browse/ARQ-1303?page=com.atlassian.jira.plugin.s...
]
Jakub Narloch commented on ARQ-1303:
------------------------------------
Ok,
But in such case, how can I use that in my test?
I would have to 'lookup' the bean that is being test each time from the
application context. You won't be able to inject you configured beans into the the
tests directly.
I was thinking about different aproach. How about resigning from class level annotations
in favor of 'factory method'. Something like:
{code}
public class TestCase {
@SpringApplicationContext
public static ApplicationContext createApplicationContext() {
return ... // the application context could be created fully programticly
}
public void test() { }
}
{code}
In such way we could just @Autowire the beans in to the test class afterwards. Also we
would have access to the ApplicationContext by simply adding @Autowired ApplicationContext
field. It would work out of the box (likely this feature has been added somewhere in
Spring 2.5.x version).
The other thing I was thinking was using the same convention as in Spring Test 3.1. You
are able to define static inner class annotated with @Configuration and define your beans
there.
Something like:
{code}
@SpringAnnotationConfiguration
public class TestCase {
@Configuration
static class ContextConfiguration {
@Bean
public SomeBean create() { }
}
public void test() { }
}
{code}
Add Spring StaticApplicationContext
-----------------------------------
Key: ARQ-1303
URL:
https://issues.jboss.org/browse/ARQ-1303
Project: Arquillian
Issue Type: Enhancement
Security Level: Public(Everyone can see)
Components: Extension - Spring
Reporter: omid pourhadi
Assignee: Marius Bogoevici
Priority: Minor
Original Estimate: 1 week, 1 day
Remaining Estimate: 1 week, 1 day
It is a common way that developers programmatically register beans into context specially
in testing rather than reading bean definitions from external configuration sources, in
this case, you need to use StaticApplicationContext.
As far as my experience concerned, there are some circumstances that you need to have
populated context when you are testing
1. for registering mock objects into context
let's assume we inject a DAO into a service and we want to mock DAO then test our
service
{code:title=Bar.java|borderStyle=solid}
public class MockTest(){
@Mock
Dao dao;
public void testMethod(){
ctx.getBeanFactory().registerSingleton(dao.getClass().getName(), dao);
}
}
{code}
2. for specifying classes not packages
sometimes you need to create a spring context by only some specific classes from
different packages not the whole packages.
It might be good idea to have an annotation ClassToScan({}) to define whcih classes, you
want to scan
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira