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.
Thank you!
We will contact you soon.
Jerome VersryngeJanuary 10th, 2013Last Updated: January 10th, 2013

This site uses Akismet to reduce spam. Learn how your comment data is processed.
Great post! (Though I would say that)
I am comparatively new to selenium and played a little with selenium IDE, and trying to do with selenium rc. I am baffled to use the scripting language there. Can you tell me what is the most used language in selenium across industries? And also I came across this course http://www.wiziq.com/course/12451-selenium-automated-web-browser-testing-for-web-applications os selenium automated web browser testing is this good? If someone does in Java and he joins a company where everyone does in ruby, then it’ll be a pain to learn ruby again. And also it would be great if you address any comparison about the available languages like… Read more »
works like magic