Integrating JUnit Tests for WaveMaker Application
Overview
JUnit is a unit testing framework for the Java programming language. JUnit has been important in the development of test-driven development. These tests are required whether imported services are working as expected or not, before proceeding to run/deployment of the application. This document demonstrates how to integrate JUnit tests in an application developed by WaveMaker RAD.
Goals
- Integrate JUnit tests in the WaveMaker application
- Writing sample test cases for services.
Prerequisites
- IDE (IntelliJ IDEA, Eclipse)
- WaveMaker Application
- Git
- Maven
Integrating JUnit Tests into App
Configuration
- Export the WaveMaker application as a zip file.
- Import this zip file into IDE (Use WaveMaker workspace sync plugin).
- Add the following dependencies in pom.xml file under the dependencies tag.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-el-api</artifactId>
<version>8.5.35</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper-el</artifactId>
<version>8.5.35</version>
<scope>provided</scope>
</dependency>
- Create a file with name project-springapp-test.xml in src/test/resources folder
- Add below snippet to the file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<import resource="file:src/main/webapp/WEB-INF/project-springapp.xml"/>
</beans>
- Go to folder src/test/java and create a package namely com/{appName}/test/core
- Add a file with name BaseTest.java
- Add code snippet to the file
package com.<appName>.test.core;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.GenericXmlWebContextLoader;
import org.springframework.test.context.web.WebAppConfiguration;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = GenericXmlWebContextLoader.class,
locations = "classpath:project-springapp-test.xml", initializers = com.wavemaker.runtime.security.DefaultBootStrapPropertySourceInitializer.class)
@WebAppConfiguration
public abstract class BaseTest {
}
Writing Test Cases
- Now start writing test classes under src/test/java package with a class extending BaseTest and with annotation @Test
- Code snippet for a sample test
import com.<appName>.test.core.BaseTest;
import com.<appName>.myjavaservice.MyJavaService;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
public class MyJavaServiceTest extends BaseTest {
@Autowired
private MyJavaService myJavaService; // MyJavaService is the Java Service added in app
@Test
public void getJsonData() {
Object jsonData = myJavaService.returnJSONData();
Assert.assertNotNull(jsonData);
}
}
See Also
How to send emails using Java Service
How to implement forgot password feature using Java Service
How to schedule a Java Service
How to accomplish Pre-Post Processing for a DB Service APIs