This post describes how to implement Selenium tests in Java. It is inspired from the post by Alex Collins, with annotations. The code is available on GitHub in the Spring-Selenium-Test directory. Some alternative and much lighter techniques are available to unit test a Spring MVC application. To unit test services, see here.
Page, Configuration & Controller
We create a simple page with ‘Hello World’:
<!doctype html> <html lang='en'> <head> <meta charset='utf-8'> <title>Welcome !!!</title> </head> <body> <h1> Hello World ! </h1> </body> </html>
We keep our controller very simple:
@EnableWebMvc
@Configuration
@ComponentScan(basePackages = 'com.jverstry')
public class WebConfig extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver getViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix('WEB-INF/pages/');
resolver.setSuffix('.jsp');
return resolver;
}
}and our controller too:
@Controller
public class MyController {
@RequestMapping(value = '/')
public String home() {
return 'index';
}
}For Selenium Testing
We create a configuration for testing. It provides the URL to open the application locally. The application is opened with Firefox:
@Configuration
public class TestConfig {
@Bean
public URI getSiteBase() throws URISyntaxException {
return new URI('http://localhost:10001/spring-selenium-test-1.0.0');
}
@Bean(destroyMethod='quit')
public FirefoxDriver getDrv() {
return new FirefoxDriver();
}
}We also define an abstract class as a basis for all tests. It automatically closes Firefox after the test:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={ TestConfig.class })
public abstract class AbstractTestIT {
@Autowired
protected URI siteBase;
@Autowired
protected WebDriver drv;
{
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
drv.close();
}
});
}
}And we implement a selenium test where we make sure our page contains ‘Hello World’:
public class SeleniumTestIT extends AbstractTestIT {
@Test
public void testWeSeeHelloWorld() {
drv.get(siteBase.toString());
assertTrue(drv.getPageSource().contains('Hello World'));
}
}The maven dependencies are the same as those described in Alex Collins‘s post.
Building The Application
f you build the application, it will open and close firefox automatically. The test will be successful.
Reference: Spring Selenium Tests With Annotations from our JCG partner Jerome Versrynge at the Technical Notes blog.



