On my recent project, I was asked to replace the backend components of a Java Web application. The backend JDBC calls and database were replaced with new Web service calls, but, the user interface was to remain exactly the same. If you have worked on such a project, you know there is a fear that what you will unintentionally break or otherwise negatively impact the user interface or other parts of the application as you work on the new backend. How do you protect yourself against unintended changes? The answer, at least in part, is to set up some Web-side regression tests? There are many frameworks that provide for Web regression testing.
|Published (Last):||19 May 2006|
|PDF File Size:||19.10 Mb|
|ePub File Size:||15.89 Mb|
|Price:||Free* [*Free Regsitration Required]|
On my recent project, I was asked to replace the backend components of a Java Web application. The backend JDBC calls and database were replaced with new Web service calls, but, the user interface was to remain exactly the same.
If you have worked on such a project, you know there is a fear that what you will unintentionally break or otherwise negatively impact the user interface or other parts of the application as you work on the new backend. How do you protect yourself against unintended changes? The answer, at least in part, is to set up some Web-side regression tests?
For my task, I found JWebUnit to be a perfect fit. It is extremely easy to get setup, integrates very well into other JUnit tests, and operates without the need for configuring a proxy or other server to execute tests. Alternatively, you can download the JAR files manually from Sourceforge. These are provided in the ZIP file that comes with the manual download.
Additionally, JWebUnit uses a plugin to execute your tests under the covers. The JAR file for the plugin needs to also be on the classpath. To date, HtmlUnit is the only real choice for the plugin to execute your tests. A WebDriver plugin is under development but is said to be very slow and not all working yet this according to the JWebUnit Web site.
What would JWebUnit test for the actions and data entry between these two pages look like? The test case class is just a JUnit 4 Test Case.
In the Before annotated method the method name is unimportant, but it must be public, take no parameters and return void , you initialize the state of your application for each unit test in the test case.
Note lines 5 and 6 below. In fact, all the methods on JWebUnit are static. So, most JWebUnit developers will make a static import of JWebUnit see line 1 and thereby shorten the rest of the code considerably. To keep things clear throughout the rest of this post, I will not make use of a static import so you can clearly see which methods are JWebUnit calls versus, say for example, a JUnit method call. With this setup accomplished, you are ready to write some Web unit tests! In this tiny example case, we want to test the initial display of the customer data form as well as the collection of customer data via the customer data form.
Again, using a JUnit 4 annotation, simply create a public method takes no parameters, returns void that is annotated with Test. This designates a JUnit test method that will execute each time the Test Case is run.
By the way too, the method name below testCustomerEntryOpen is arbitrary. It used to be required back in JUnit 3 days , but now it is just convention. JWebUnit will now start to exercise the Web site by bringing up the page specified. Following the begin of the page display, note all the JWebUnit assert checks in this method. For a complete list of the JWebUnit methods — to include its long list of assert methods — see here. I kept this first test method pretty simple, but JWebUnit is pretty sophisticated and lets you exercise your Web pages and validate the proper display with a vast array of methods.
In this next test method, I have JWebUnit enter data into the customer entry form lines , submit the data line 13 or 14 as an option , and check the appropriate data displays on the customer confirmation page line 17 to the end of the method. As I hope you can see by this example, I have shown several different ways of checking the data on the confirmation page. The multiple options allow you all sorts of ways to exercise and check the operation of your Web pages. The look and feel the same.
This method checks that on push of the Clear button on the customer entry page, all the user entered data is cleared and the defaults are restored. With the JWebUnit tests created, how do you execute them?
No additional server piece or proxy rerouting is required in order to build and execute tests! Build and execute Web unit tests just like you build any JUnit test. So JWebUnit brings convenience and conciseness to Web unit testing. Some ad blockers can block the form below. Categories Categories Select Category. Like What You've Read? Subscribe to the Blog. Every Friday we send that week's content from our Developers via email. Try it out!
JUnit - Extensions
The QuickStart contains sample code and guidance to get you started with jWebUnit. Creating a TestCase. The simplest is to inherit from WebTestCase rather than junit. An alternative is to include an instance of the WebTester class in your TestCase and delegate navigation and assertions to it. This is provided in case you need or prefer delegation. TestCase; import net. For the rest of the examples, we will use inheritance.
Web Testing BDD-style With JWebUnit and Easyb
Automated testing saves you the time and effort of performing the same test steps repetitively. This article introduces jWebUnit, a set of Java classes that you can use to develop test cases for Web applications. I'll show you how to download the jWebUnit libraries, configure the Eclipse platform to develop jWebUnit test cases, and build a sample test case. Automated testing for Web applications means bypassing the Web browser and working with the Web site through your program.
JWebUnit for Web Regression Tests
The intent of Cactus is to lower the cost of writing tests for server-side code. It uses JUnit and extends it. Cactus implements an in-container strategy that executes the tests inside a container. Cactus Framework is the heart of Cactus. It is the engine that provides the API to write Cactus tests. Cactus Integration Modules are front-ends and frameworks that provide easy ways of using the Cactus Framework Ant scripts, Eclipse plugin, and Maven plugin.
Comment 1. Behaviour-driven development is a great way to design and build the web layers of your application. It runs in memory, so it's fast. However, it also has an intuitive, high-level API, making it easy to use even if you have only an approximate idea of the exact HTML details of your application screens. A simple JWebUnit test case is shown here:.