How to Perform a Subfunction Unit Test (Batch)

Subfunction unit tests for batch processing are tested using an automated test framework. Tests are performed in subfunction units by continuously executing the request unit tests.

The test class should be created in such a way that the following conditions are met.

  • The package of the test class is the package of the subfunction to be tested.
  • Create a test class with the class name <subfunction ID> Test.

For example, if the subfunction ID of the target subfunction is B21AC01, the test class will be as follows.

package nablarch.sample.ss21AC01

import nablarch.test.core.batch.BatchRequestTestSupport;

// Middle is omitted

public class B21AC01Test extends BatchRequestTestSupport {

Test case division policy

Basically, one test case per sheet. Exceptions are shown below.

For complex test cases

When there is a large amount of test data, or when there are many processes included in one sheet, including all the test data into one sheet may result in too much data in the sheet decreasing the readability. Dividing one case into multiple sheets is better.

For very simple test cases

If the test case is very simple and the amount of test data is small, all test cases may be included in one sheet.

Basic description method

Basically, one test case is written in a single sheet. When multiple batch executions are written in a single sheet, it is a subfunction unit test.

In the following example, a subfunction consisting of three batches (file input batch, user deletion batch and file output batch) is executed.

/** Case that ends normally */
@Test
public void testSuccess() {
    execute();
}

[TestSuccess sheet]

LIST_MAP=testShots

no description expectedStatusCode setUpTable setUpFile expectedTable expectedFile requestPath
1 File input 100 default default default   fileInputBatch
2 Delete user 100 default   default   userDeleteBatch
3 File Output 100 default   fileInputBatch default fileOutputBatch

When dividing a single test case into multiple sheets

For example, the test case illustrated in the previous section (Basic description method) can be divided and described as follows.

package nablarch.sample.ss21AA01

import org.junit.Test;
import nablarch.test.core.messaging.BatchRequestTestSupport;

// Middle is omitted

public class B21AA01Test extends BatchRequestTestSupport {

    @Test
    public void testSuccess() {

        // Register the input file to the temporary table
        execute("testSuccess_fileInput");

        // Delete the user-related table for temporary table information
        execute("testSuccess_userDelete");

        // Output the results to a file
        execute("testSuccess_fileOutput");
    }

[TestSuccess_fileInput sheet]

LIST_MAP=testShots

no case expectedStatusCode setUpTable setUpFile requestPath
1 File input 100 default default fileInputBatch

[testSuccess_userDelete sheet]

LIST_MAP=testShots

no case expectedStatusCode setUpTable expectedTable requestPath
1 Delete user 100 default default userDeleteBatch

[TestSuccess_fileOutput sheet]

LIST_MAP=testShots

no case expectedStatusCode setUpTable outFile requestPath
1 File Output 100 default default fileOutputBatch

When multiple cases are included in one sheet

In the case of very simple test cases, they may be grouped together.

In the following example, two test cases (a normal case and a case with 0 records as input data) are described in a single sheet

/** Case that ends normally */
@Test
public void testSuccess() {
    execute();
}

[TestSuccess sheet]

LIST_MAP=testShots

no description expectedStatusCode setUpTable setUpFile expectedTable expectedFile requestPath
1-1 File input 100 shot1 shot1     fileInputBatch
1-2 Delete user 100     shot1   userDeleteBatch
2-1 File input(0 record) 100 shot2 shot2     fileInputBatch
2-2 Delete user(0 record) 100     shot2   userDeleteBatch

Tip

Group IDs can be used to describe multiple cases of test data on one sheet. For more information, see the “To describe the data of multiple test cases on a single sheet” section.