3
votes

I've got the following Test-class, but it doesn't matter what I set as "ContextConfiguration-locations" - it never set my UserService. And it doesn't throw any error when I set a non-existing file in the locations-property... what am I doing wrong?

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContextTest.xml" })
public class BasicPersistenceTest {

@Autowired
private UserService userService;

@Test
public void testUserLogin() throws Exception {

    User result = userService.getUser("stefan", "walkner");

    Assert.assertNotNull(result);
}

@Test
public void testLogin() {
    User user = userService.getUser("stefan", "walkner");
    Assert.assertNull(user);
}

public UserService getUserService() {
    return userService;
}

public void setUserService(UserService userService) {
    this.userService = userService;
}
}

Spring-Version: 2.5.6.SEC01

JUnit-Version: 4.5

JDK: 1.5

2
When using @Autowired, you don't need a setter for the property, and I don't see why you want to have a public getter for it either. - crunchdog
I removed getter/setter and included the setup()-method. bizzarely, it seems like the setup()-method is never called... I put a Assert.assertNotNull(null) in there and a debug-breakpoint, but it never gets there... - swalkner
Did you annotate the setup() with the @Before annotation? And you don't get any Spring injection errors? How is your UserService bean declared, can you post that too? - crunchdog
If you use @Autowired, Spring does not need any method access to the property, it can access the private directly. - DwB

2 Answers

5
votes

I don't know why your test does not show any exceptions, but Spring 2.5 is not compatible with JUnit 4.5. Either move to the Spring 3 milestones, or downgrade JUnit to 4.4 .

1
votes

I havn't test it yet, but if you really want to upgrade to spring 3.0, you can use the ehcache-spring-annotations framework.