Hướng dẫn viết Unit test Java chi tiết nhất

Kiểm thử phần mềm (software testing) là hoạt động nhằm tìm kiếm và phát hiện ra các lỗi của phần mềm, đảm bảo phần mềm chính xác, đúng và trọn vẹn theo yêu cầu của khách hàng, yêu cầu của sản phẩm đã đặt ra. Software testing cũng gửi tới mục tiêu, cái nhìn độc lập về phần mềm điều này cho phép đánh giá và hiểu rõ các rủi ro khi thực thi phần mềm. Căn cứ là gì? Hãy cùng LVN Group nghiên cứu thông qua nội dung trình bày dưới đây

Hướng dẫn viết Unit test Java chi tiết nhất

1. Uni Test là gì? 

Unit Test (Kiểm thử đơn vị) là kỹ thuật kiểm thử những khối thành phần nhỏ nhất trong phần mềm (thường là các hàm hoặc phương thức). Đây là một trong những cấp độ kiểm thử đơn giản và có thể bắt đầu sớm trong vòng đời phát triển phần mềm. Thậm chí, bạn có thể viết unit test trước khi viết mã. Tuy nhiên, đây không phải là một thuật ngữ mới trong lĩnh vực phần mềm. Khái niệm unit test xuất hiện lần đầu trong ngôn ngữ lập trình Smalltalk vào những năm 1970. Đến nay, unit test gần như đã trở thành một chuẩn mực trong ngành bởi mục đích của nó là phục vụ yêu cầu nâng cao chất lượng sản phẩm phần mềm.

2. Kiểm thử là gì?

Đây là một trong những loại kiểm thử phần mềm cần thiết để xác nhận xem hệ thống có hoạt động đúng yêu cầu được không. Ở tất cả các mức độ kiểm thử đều được kiểm thử chức năng. 

Testing of function là một trong những loại kiểm thử phần mềm cần thiết

Testing of function có thể thực hiện theo 2 quan điểm: business – process – based và requirements-based. Với business – process – based, kiểm thử viên sẽ sử dụng các kiến thức về quy trình nghiệp vụ (mô tả các kịch bản liên quan đến nghiệp vụ của hệ thống mỗi ngày).

Trong khi đó, requirements-based sử dụng các đặc tả yêu cầu của hệ thống làm cơ sở để design test. Để đảm bảo những thành phần cần thiết nhất đều được kiểm thử, hãy xem xét độ ưu tiên của yêu cầu dựa trên tiêu chí rủi ro, theo đó, chúng ta sẽ sử dụng độ ưu tiên để kiểm thử. 

Các bước kiểm thử chức năng gồm: 

Bước 1: Xác định phần mềm sẽ kiểm thử và chức năng của nó 

Bước 2: Dựa trên tài liệu đặc tả chức năng để tạo dữ liệu đầu vào 

Bước 3: Dựa vào tài liệu đặc tả chức năng để xác định đầu ra

Bước 4: Thực hiện các trường hợp kiểm thử phần mềm  

Bước 5: So sánh kết quả thực tiễn với mong muốn đạt được 

3. Lợi ích của Unit Testing

Tách rời việc kiểm thử với mã nguồn; không cần viết mã vào phương thức main() để có thể kiểm tra phương thức có hoạt động đúng đắn được không.

Duy trì một bộ kiểm thử liên tục được cập nhật.

Đảm bảo mã mới không ảnh hưởng và gây lỗi tới những chức năng hiện có (qua việc thực hiện chạy lại toàn bộ bộ test đã viết từ trước).

4. Hướng dẫn viết Unit test Java chi tiết nhất

Trước tiên chúng ta cần chuẩn bị vài thứ:

IntelliJ

Maven

Junit 5

JDK 8 or later

4.1. Tạo project

Sau khi tạo xong project, xuất hiện file pom.xml.

File pom.xml là nơi khai báo tất cả những gì liên quan đến dự án được cấu hình qua maven, như khai báo các dependency, version của dự án, tên dự án, repossitory … 

Chúng ta thêm các thư viện Junit thông qua pom.xml thay vì add file jar như lúc sử dụng ant.

pom.xml

<?xml version=”1.0″ encoding=”UTF-8″?>

<project xmlns=”http://maven.apache.org/POM/4.0.0″

         xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

         xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>

    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>

    <artifactId>DemoUnitTest</artifactId>

    <version>1.0-SNAPSHOT</version>

    <dependencies>

        <dependency>

            <groupId>org.apache.maven.plugins</groupId>

            <artifactId>maven-compiler-plugin</artifactId>

            <version>3.8.1</version>

        </dependency>

        <dependency>

            <groupId>org.junit.jupiter</groupId>

            <artifactId>junit-jupiter-engine</artifactId>

            <version>5.6.2</version>

            <scope>test</scope>

        </dependency>

        <dependency>

            <groupId>org.junit.jupiter</groupId>

            <artifactId>junit-jupiter-params</artifactId>

            <version>5.6.2</version>

            <scope>test</scope>

        </dependency>

        <dependency>

            <groupId>org.junit.jupiter</groupId>

            <artifactId>junit-jupiter-api</artifactId>

            <version>5.6.2</version>

            <scope>test</scope>

        </dependency>

    </dependencies>

</project>

4.2. Viết code để test

Tạo một class MathUtil ở ..srcmainjava  

MathUtil

public class MathUtil {

    public int sum(int a, int b){

        return a+b;

    }

}

4.3. Tạo testcase version đơn giản

Chúng ta viết vài test case nhẹ nhàng thông qua Annotation @Test và hàm assertEquals().

Tạo một class MathUtilTest tại ..srctestjava 

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

public class MathUtilTest {

    MathUtil util = new MathUtil();

    @Test

    void test1(){

        assertEquals(util.sum(1,1),2);

    }

    @Test

    void test2(){

        assertEquals(util.sum(1,1),3);

    }

    @Test

    void test3(){

        assertEquals(util.sum(1,2),3);

    }

}

IntelliJ hỗ trợ các bạn chạy từng test case hoặc cả class test thông qua các nút hiện kế bên số dòng

Khi chạy test, nó sẽ kiểm tra tất cả các Expected và Actual, nó chỉ cho bạn pass khi tất cả đều thành công, chỉ cần có 1 test sai xem như test fail.

Khi có sai sót xảy ra, nó sẽ hiện thông báo lên màn hình

4.4. Unit Test với file csv

 

Tạo một file data.csv tại .srcmainresources

a,b,result

1,1,2

1,2,3

1,3,4

1,4,5

1,5,6

2,1,3

2,2,4

2,3,5

2,4,6

2,5,7

tạo thêm 1 class MathUtilCsvTest.java

import org.junit.jupiter.params.ParameterizedTest;

import org.junit.jupiter.params.provider.CsvFileSource;

import static org.junit.jupiter.api.Assertions.*;

public class MathUtilCsvTest {

    @ParameterizedTest

    @CsvFileSource(resources = “/Data.csv”, numLinesToSkip = 1)

    void test(int a, int b, int result){

        MathUtil math = new MathUtil();

        assertEquals(math.sum(a,b),result);

    }

}

Sắp xếp các tham số trong hàm test() theo thứ tự các tham số trong file CSV. 

SOẠN HỢP ĐỒNG, ĐƠN, VĂN BẢN THEO YÊU CẦU CHỈ 500.000đ

--- Gọi ngay 1900.0191 ---

(Tư vấn Miễn phí - Hỗ trợ 24/7)

Công ty Luật LVN - Địa chỉ: Số 16B Nguyễn Thái Học, Yết Kiêu, Hà Đông, Hà Nội, Việt Nam

Gmail: luatlvn@gmail.com