JavaRush /Blog Java /Random-VI /JUnit phần I

JUnit phần I

Xuất bản trong nhóm

JUnit :: hoặc cách yêu thích trình xác thực JavaRush

JUnit phần I - 1Nói ngắn gọn về lý do tại sao chúng ta cần con thú này? JUnit là một framework để tự động kiểm tra mã tốt hay không tốt của bạn . Bạn có thể nói: - tại sao tôi cần cú swing này, tôi có thể kiểm tra mã Java tốt của mình một cách dễ dàng và đơn giản. Bạn có thể viết rất nhiều lời giới thiệu, nhưng tôi không phải là một nhà thơ, hãy bắt tay vào công việc thôi...

Tạo một đối tượng

Và vì vậy, để kiểm tra thứ gì đó, trước tiên chúng ta cần một đối tượng thử nghiệm. Chúng ta có một nhiệm vụ phía trước.
  1. Chúng ta cần một đối tượng sẽ lưu trữ thông tin về Người dùng.
    1. Id - phải được tính theo thứ tự người dùng mới được thêm vào.
    2. Tên tài khoản.
    3. Tuổi của anh ấy.
    4. Giới tính Nam Nữ)
  2. Nó là cần thiết để cung cấp lưu trữ danh sách người dùng.

  3. Lớp học phải có khả năng.

    1. Tạo danh sách tất cả người dùng.
    2. Tạo danh sách người dùng theo giới tính (MALE/NỮ).
    3. Trả về số lượng người dùng trong danh sách chung và tính số lượng dựa trên giới tính của người dùng.
    4. Tính tổng số tiền theo độ tuổi của người dùng và cũng tính đến giới tính.
    5. Tính độ tuổi trung bình, cả tổng thể và theo giới tính.
Và vì vậy, hãy bắt đầu tạo một đối tượng... Hãy tạo một lớp Java Usercó chứa các trường:
private int id;
private String name;
private int age;
private Sex sex;
Điều này là đủ để lưu trữ dữ liệu người dùng, hãy xem những gì khác cần thiết cho nhiệm vụ. Chúng ta cần bằng cách nào đó lưu trữ tất cả người dùng, hãy tạo một trường tĩnh trong lớp của chúng ta allUsers, tôi nghĩ sẽ ổn nếu điều này là ổnMap<Integer, User>
private static Map<Integer, User> allUsers;
Bằng cách nào đó, chúng ta cũng cần gán số thứ tự cho người dùng, hãy tạo trường bộ đếm tĩnh, khi tạo người dùng mới, trường này sẽ gán số thứ tự Id cho người dùng.
private static int countId = 0;
Vì vậy, có vẻ như chúng ta đã sắp xếp xong các trường, hãy viết một hàm tạo cho đối tượng của chúng ta và các getters cho các trường id, name, age, sex. Không có gì phức tạp với heterae, hãy nhờ IDEA giúp đỡ , cô ấy sẽ không bao giờ từ chối và chúng tôi sẽ làm cho hàm tạo trở nên phức tạp một chút. Nhà thiết kế sẽ có thể. Khởi tạo các trường, kiểm tra xem có đối tượng như vậy trong allUsers, nếu không có đối tượng đó thì tăng bộ đếm của chúng tôi countId++và thêm nó vào danh sách tất cả người dùng. Và cũng có thể khởi tạo trường allUsers nếu nó chưa được khởi tạo. Để thuận tiện cho việc tìm kiếm các đối tượng giống hệt nhau, chúng tôi sẽ xác định lại các phương thức equals()hashCode()một lần nữa chúng tôi sẽ yêu cầu trợ giúp từ IDEA yêu quý của chúng tôi và so sánh theo các trường name, age, sex. Ngoài ra, hãy tạo một phương thức riêng tư hasUser()để kiểm tra xem đối tượng đó có trong danh sách hay không.
@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    User user = (User) o;
    return age == user.age &&
            Objects.equals(name, user.name) &&
            sex == user.sex;
}

@Override
public int hashCode() {

    return Objects.hash(name, age, sex);
}
Cuối cùng tôi đã có được một nhà thiết kế như thế này.
public User(String name, int age, Sex sex) {
    if (allUsers == null){
        allUsers = new HashMap<>();
    }

    this.name = name;
    this.age = age;
    this.sex = sex;

    if (!hasUser()){
        countId++;
        this.id = countId;
        allUsers.put(id, this);
    }
}
và một phương pháp trợ giúp riêng
private boolean hasUser(){
    for (User user : allUsers.values()){
        if (user.equals(this) && user.hashCode() == this.hashCode()){
            return true;
        }
    }
    return false;
}
và cũng xác định lạitoString()
@Override
public String toString() {
    return "User{" +
            "id=" + id +
            ", name='" + name + '\'' +
            ", age=" + age +
            ", sex=" + sex +
            '}';
}
Bây giờ là lúc triển khai tính logic của các phương thức được yêu cầu. Vì logic chủ yếu sẽ hoạt động với các trường tĩnh nên chúng ta cũng sẽ tạo các phương thức tĩnh; chúng không cần thiết cho các đối tượng.
  1. Tạo danh sách tất cả người dùng.
  2. Tạo danh sách người dùng theo giới tính (MALE/NỮ).
  3. Điểm ab có thể được xử lý tốt bằng phương thức getAllUsers()trả về danh sách tất cả Uservà phương thức quá tải getAllUsers(Sex sex)sẽ trả về danh sách, tùy thuộc vào tham số được truyền Sex.

    public static List<User> getAllUsers(){
        return new ArrayList<>(allUsers.values());
    }
    
    public static List<User> getAllUsers(Sex sex){
        List<User> listAllUsers = new ArrayList<>();
        for (User user : allUsers.values()){
            if (user.sex == sex){
                listAllUsers.add(user);
            }
        }
        return listAllUsers;
    }

  4. Trả về số lượng người dùng trong danh sách chung và tính số lượng dựa trên giới tính của người dùng.

    public static int getHowManyUsers(){
        return allUsers.size();
    }
    
    public static int getHowManyUsers(Sex sex){
        return getAllUsers(sex).size();
    }

  5. Tính tổng số tiền theo độ tuổi của người dùng và cũng tính đến giới tính. Hãy tạo các phương thức cho nhiệm vụ này.

    public static int getAllAgeUsers(){
        int countAge = 0;
        for (User user : allUsers.values()){
            countAge += user.age;
        }
        return countAge;
    }
    
    public static int getAllAgeUsers(Sex sex){
        int countAge = 0;
        for (User user : getAllUsers(sex)){
            countAge += user.age;
        }
        return countAge;
    }

  6. Tính độ tuổi trung bình, cả tổng thể và theo giới tính.

    public static int getAverageAgeOfAllUsers(){
        return getAllAgeUsers() / getHowManyUsers();
    }
    
    public static int getAverageAgeOfAllUsers(Sex sex){
        return getAllAgeUsers(sex) / getHowManyUsers(sex);
    }

    Tuyệt vời, chúng ta đã mô tả đối tượng được yêu cầu và hành vi của nó. Bây giờ chúng ta có thể chuyển sang JUnit , nhưng trước tiên tôi sẽ cho bạn thấy một bài kiểm tra đơn giản sẽ trông như thế nào nếu chúng ta thực hiện nó trong main .

    public static void main(String[] args) {
        new User("Eugene", 35, Sex.MALE);
        new User("Marina", 34, Sex.FEMALE);
        new User("Alina", 7, Sex.FEMALE);
    
    
        System.out.println("All users:");
        User.getAllUsers().forEach(System.out::println);
        System.out.println("All users: MALE");
        User.getAllUsers(Sex.MALE).forEach(System.out::println);
        System.out.println("All users: FEMALE");
        User.getAllUsers(Sex.FEMALE).forEach(System.out::println);
        System.out.println("================================================");
        System.out.println(" all users: " + User.getHowManyUsers());
        System.out.println(" all MALE users: " + User.getHowManyUsers(Sex.MALE));
        System.out.println("all FEMALE users: " + User.getHowManyUsers(Sex.FEMALE));
        System.out.println("================================================");
        System.out.println(" total age of all users: " + User.getAllAgeUsers());
        System.out.println(" total age of all MALE users: " + User.getAllAgeUsers(Sex.MALE));
        System.out.println("total age of all FEMALE users: " + User.getAllAgeUsers(Sex.FEMALE));
        System.out.println("================================================");
        System.out.println(" average age of all users: " + User.getAverageAgeOfAllUsers());
        System.out.println(" average age of all MALE users: " + User.getAverageAgeOfAllUsers(Sex.MALE));
        System.out.println("average age of all FEMALE users: " + User.getAverageAgeOfAllUsers(Sex.FEMALE));
        System.out.println("================================================");
    }

    Đầu ra của bảng điều khiển sẽ trông giống như thế này và sau đó chúng tôi sẽ so sánh xem liệu chúng tôi có hoạt động bình thường hay không. Tất nhiên, chúng ta có thể đi sâu hơn, viết logic so sánh và xem phép tính của chúng ta nói lên điều gì, mặc dù chúng ta không chắc chắn rằng mình có thể cung cấp mọi thứ.

    //output
    Все пользователи:
    User{id=1, name='Eugene', age=35, sex=MALE}
    User{id=2, name='Marina', age=34, sex=FEMALE}
    User{id=3, name='Alina', age=7, sex=FEMALE}
    Все пользователи: MALE
    User{id=1, name='Eugene', age=35, sex=MALE}
    Все пользователи: FEMALE
    User{id=2, name='Marina', age=34, sex=FEMALE}
    User{id=3, name='Alina', age=7, sex=FEMALE}
    ================================================
           всех пользователей: 3
      всех пользователей MALE: 1
    всех пользователей FEMALE: 2
    ================================================
           общий возраст всех пользователей: 76
      общий возраст всех пользователей MALE: 35
    общий возраст всех пользователей FEMALE: 41
    ================================================
           средний возраст всех пользователей: 25
      средний возраст всех пользователей MALE: 35
    средний возраст всех пользователей FEMALE: 20
    ================================================
    
    Process finished with exit code 0

    Chúng tôi không hài lòng với kết quả này, với các bài kiểm tra chính , chúng tôi cần JUnit .

Cách kết nối JUnit với một dự án

Câu hỏi đặt ra là làm thế nào để kết nối nó với dự án. Đối với những người đã biết, tôi sẽ không chọn Maven , vì đây là một câu chuyện hoàn toàn khác. ;) Mở cấu trúc project Ctrl + Alt + Shift + S -> Libraries -> click + (New Project Library) -> chọn từ Maven, JUnit phần I - 2sau đó ta thấy cửa sổ như vậy, nhập “junit:junit:4.12” vào thanh tìm kiếm , đợi cho đến khi tìm được -> OK! -> Được rồi! JUnit phần I - 3Bạn sẽ nhận được kết quả này JUnit phần I - 4Nhấp vào OK, xin chúc mừng JUnit đã được thêm vào dự án. Tiếp tục nào. Bây giờ chúng ta cần tạo các bài kiểm tra cho lớp Java của mình, đặt con trỏ vào tên của lớp User -> nhấn Alt + Enter -> chọn tạo Kiểm tra. Chúng ta sẽ thấy một cửa sổ trong đó chúng ta cần chọn thư viện JUnit4 -> chọn các phương thức mà chúng ta sẽ kiểm tra -> OK JUnit phần I - 5Bản thân ý tưởng sẽ tạo một lớp UserTest, đây là lớp mà chúng ta sẽ bao gồm mã của mình bằng các bài kiểm tra. Bắt đầu nào:

@Test đầu tiên của chúng tôi

Hãy tạo phương thức @TestgetAllUsers() đầu tiên của chúng ta - đây là phương thức sẽ trả về tất cả người dùng. Bài kiểm tra sẽ trông giống như thế này:
@Test
public void getAllUsers() {
    // create test data
    User user = new User("Eugene", 35, Sex.MALE);
    User user1 = new User("Marina", 34, Sex.FEMALE);
    User user2 = new User("Alina", 7, Sex.FEMALE);

    //create an expected list and fill it with the data of our method
    List<User> expected = User.getAllUsers();

    //create actual list put data in it for comparison
    //what we expect the method to return
    List<User> actual = new ArrayList<>();
    actual.add(user);
    actual.add(user1);
    actual.add(user2);

    //run the test if the list expected and actual are not equal
    //the test will fail, read the test results in the console
    Assert.assertEquals(expected, actual);
}
Ở đây, chúng tôi tạo một số người dùng thử nghiệm -> tạo một danh sách expected trong đó chúng tôi sẽ đặt những người dùng có phương thức sẽ quay lại với chúng tôi getAllUsers()-> tạo một danh sách actual trong đó chúng tôi sẽ đặt những người dùng mà chúng tôi cho rằng getAllUsers()phương thức Assert.assertEquals(actual,expected) sẽ được sử dụng và chúng tôi sẽ chuyển các danh sách đã được kiểm tra và cập nhật cho nó. Phương pháp này sẽ kiểm tra các đối tượng trong danh sách được cung cấp và trả về kết quả kiểm tra. Phương thức sẽ so sánh tất cả các trường của đối tượng, thậm chí đi qua trường của cha mẹ nếu có sự kế thừa. Hãy chạy thử nghiệm đầu tiên... JUnit phần I - 6Quá trình thử nghiệm đã hoàn tất thành công. Bây giờ, hãy thử làm cho bài kiểm tra thất bại, vì điều này chúng ta cần thay đổi một trong các danh sách kiểm tra, chúng ta sẽ thực hiện việc này bằng cách nhận xét việc bổ sung một người dùng vào danh sách actual.
@Test
public void getAllUsers() {
    // create test data
    User user = new User("Eugene", 35, Sex.MALE);
    User user1 = new User("Marina", 34, Sex.FEMALE);
    User user2 = new User("Alina", 7, Sex.FEMALE);

    //create an expected list and fill it with the data of our method
    List<User> expected = User.getAllUsers();

    //create actual list put data in it for comparison
    //what we expect the method to return
    List<User> actual = new ArrayList<>();
    actual.add(user);
    actual.add(user1);
    //actual.add(user2);

    //run the test if the list expected and actual are not equal
    //the test will fail, read the test results in the console
    Assert.assertEquals(expected, actual);
}
Chúng tôi chạy thử nghiệm và thấy những điều sau: JUnit phần I - 7Bây giờ chúng ta có thể xem xét một chút lý do khiến thử nghiệm thất bại. Ở đây chúng ta thấy rằng có nhiều người dùng trong danh sách được kiểm tra hơn danh sách hiện tại. Đây là lý do cho sự thất bại. Chúng ta có thể kiểm tra điều này trong phần chính không? JUnit : main = 1 : 0. Hãy xem thử nghiệm sẽ trông như thế nào nếu nó chứa các đối tượng hoàn toàn khác nhau, hãy thực hiện như thế này:
@Test
public void getAllUsers() {
    // create test data
    User user = new User("Eugene", 35, Sex.MALE);
    User user1 = new User("Marina", 34, Sex.FEMALE);
    User user2 = new User("Alina", 7, Sex.FEMALE);

    //create an expected list and fill it with the data of our method
    List<User> expected = User.getAllUsers();

    //create actual list put data in it for comparison
    //what we expect the method to return
    List<User> actual = new ArrayList<>();
    actual.add(new User("User1", 1, Sex.MALE));
    actual.add(new User("User2", 2, Sex.FEMALE));
    actual.add(new User("User3", 3, Sex.MALE));

    //run the test if the list expected and actual are not equal
    //the test will fail, read the test results in the console
    Assert.assertEquals(expected, actual);
}
Đây là những gì sẽ có trong bảng điều khiển: JUnit phần I - 8tại đây bạn có thể thấy ngay rằng có những người dùng khác nhau trong danh sách được so sánh, chúng ta cũng có thể nhấp vào <Nhấp để xem sự khác biệt> chúng ta sẽ nhận được một cửa sổ nơi chúng ta có thể xem chi tiết dữ liệu nào chúng ta có vấn đề với. IDEA sẽ nêu bật tất cả các lĩnh vực có sự khác biệt. JUnit phần I - 9mainđiều này có thể xảy ra không? - KHÔNG. JUnit : main = 2 : 0 Chà, hãy tiếp tục, chúng ta vẫn còn một loạt các phương thức cần được kiểm tra), nhưng chờ đã, sẽ không tệ nếu kiểm tra xem phương thức đó có quay getAllUsers()lại với chúng ta hay không, bởi vì đó là những gì chúng tôi làm với nullcác tác vụ JavaRush do trình xác thực bắt được). Hãy làm điều này đi, chỉ mất ba kopecks thôi...
@Test
public void getAllUsers_NO_NULL() {
    //add check for null
    List<User> expected = User.getAllUsers();
    Assert.assertNotNull(expected);
}
Vâng, vâng, đây gần như là cách trình xác nhận bắt được đoạn mã tồi tệnull của chúng ta ;) Bây giờ hãy chạy thử nghiệm này và xem nó cho chúng ta thấy điều gì. Và nó sẽ báo lỗi, làm thế nào???? Làm sao có thể xảy ra lỗi kiểm tra ở đây))) JUnit phần I - 10Và ở đây chúng ta có thể gặt hái những thành quả đầu tiên của việc bao bọc mã của mình bằng các bài kiểm tra. Như bạn còn nhớ, allUsers chúng ta đã khởi tạo trường trong hàm tạo, nghĩa là khi gọi phương thức getAllUsers(), chúng ta sẽ tham chiếu đến một đối tượng chưa được khởi tạo. Hãy chỉnh sửa nó, xóa phần khởi tạo khỏi hàm tạo và thực hiện khi khai báo trường.
private static Map<Integer, User> allUsers = new HashMap<>();

    public User(String name, int age, Sex sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;

        if (!hasUser()) {
            countId++;
            this.id = countId;
            allUsers.put(id, this);
        }
    }
Hãy chạy thử nghiệm, bây giờ mọi thứ đều ổn. JUnit phần I - 11Tôi không nghĩ rằng sẽ dễ dàng bắt được NPE trong main, tôi nghĩ bạn sẽ đồng ý rằng số lượng là JUnit: main = 3: 0 Sau đó, tôi sẽ trình bày tất cả các phương pháp bằng các bài kiểm tra và cho bạn xem nó sẽ trông như thế nào ... Bây giờ lớp thử nghiệm của chúng tôi trông như thế này:
package user;

import org.junit.Assert;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

import static org.junit.Assert.*;

public class UserTest {

    @Test
    public void getAllUsers() {
        // create test data
        User user = new User("Eugene", 35, Sex.MALE);
        User user1 = new User("Marina", 34, Sex.FEMALE);
        User user2 = new User("Alina", 7, Sex.FEMALE);

        //create an expected list and fill it with the data of our method
        List<User> expected = User.getAllUsers();

        //create actual list put data in it for comparison
        //what we expect the method to return
        List<User> actual = new ArrayList<>();
        actual.add(user);
        actual.add(user1);
        actual.add(user2);

        //run the test if the list expected and actual are not equal
        //the test will fail, read the test results in the console
        Assert.assertEquals(expected, actual);
    }

    @Test
    public void getAllUsers_NO_NULL() {
        //add check for null
        List<User> expected = User.getAllUsers();
        Assert.assertNotNull(expected);
    }

    @Test
    public void getAllUsers_MALE() {
        User user = new User("Eugene", 35, Sex.MALE);
        User user1 = new User("Marina", 34, Sex.FEMALE);
        User user2 = new User("Alina", 7, Sex.FEMALE);

        List<User> expected = User.getAllUsers(Sex.MALE);

        List<User> actual = new ArrayList<>();
        actual.add(user);

        Assert.assertEquals(expected, actual);
    }

    @Test
    public void getAllUsers_MALE_NO_NULL() {
        //add check for null
        List<User> expected = User.getAllUsers(Sex.MALE);
        Assert.assertNotNull(expected);
    }

    @Test
    public void getAllUsers_FEMALE() {
        User user = new User("Eugene", 35, Sex.MALE);
        User user1 = new User("Marina", 34, Sex.FEMALE);
        User user2 = new User("Alina", 7, Sex.FEMALE);

        List<User> expected = User.getAllUsers(Sex.FEMALE);

        List<User> actual = new ArrayList<>();
        actual.add(user1);
        actual.add(user2);

        Assert.assertEquals(expected, actual);
    }

    @Test
    public void getAllUsers_FEMALE_NO_NULL() {
        //add check for null
        List<User> expected = User.getAllUsers(Sex.FEMALE);
        Assert.assertNotNull(expected);
    }

    @Test
    public void getHowManyUsers() {
        User user = new User("Eugene", 35, Sex.MALE);
        User user1 = new User("Marina", 34, Sex.FEMALE);
        User user2 = new User("Alina", 7, Sex.FEMALE);

        int expected = User.getHowManyUsers();

        int actual = 3;

        Assert.assertEquals(expected, actual);
    }

    @Test
    public void getHowManyUsers_MALE() {
        User user = new User("Eugene", 35, Sex.MALE);
        User user1 = new User("Marina", 34, Sex.FEMALE);
        User user2 = new User("Alina", 7, Sex.FEMALE);

        int expected = User.getHowManyUsers(Sex.MALE);

        int actual = 1;

        Assert.assertEquals(expected, actual);
    }

    @Test
    public void getHowManyUsers_FEMALE() {
        User user = new User("Eugene", 35, Sex.MALE);
        User user1 = new User("Marina", 34, Sex.FEMALE);
        User user2 = new User("Alina", 7, Sex.FEMALE);

        int expected = User.getHowManyUsers(Sex.FEMALE);

        int actual = 2;

        Assert.assertEquals(expected, actual);
    }

    @Test
    public void getAllAgeUsers() {
        User user = new User("Eugene", 35, Sex.MALE);
        User user1 = new User("Marina", 34, Sex.FEMALE);
        User user2 = new User("Alina", 7, Sex.FEMALE);

        int expected = User.getAllAgeUsers();

        int actual = 35 + 34 + 7;

        Assert.assertEquals(expected, actual);
    }

    @Test
    public void getAllAgeUsers_MALE() {
        User user = new User("Eugene", 35, Sex.MALE);
        User user1 = new User("Marina", 34, Sex.FEMALE);
        User user2 = new User("Alina", 7, Sex.FEMALE);

        int expected = User.getAllAgeUsers(Sex.MALE);

        int actual = 35;

        Assert.assertEquals(expected, actual);
    }

    @Test
    public void getAllAgeUsers_FEMALE() {
        User user = new User("Eugene", 35, Sex.MALE);
        User user1 = new User("Marina", 34, Sex.FEMALE);
        User user2 = new User("Alina", 7, Sex.FEMALE);

        int expected = User.getAllAgeUsers(Sex.FEMALE);

        int actual = 34 + 7;

        Assert.assertEquals(expected, actual);
    }
}
Vâng, hóa ra nó không hề nhỏ, nhưng điều gì sẽ xảy ra khi làm việc với những dự án lớn. Những gì có thể được giảm bớt ở đây? Sau khi đánh giá mọi thứ, bạn có thể thấy rằng chúng tôi tạo dữ liệu thử nghiệm trong mỗi thử nghiệm và ở đây các chú thích sẽ hỗ trợ chúng tôi. Hãy thực hiện @Before- Chú thích @Beforecho biết rằng phương thức sẽ được thực thi trước mỗi phương thức được thử nghiệm @Test. Lớp thử nghiệm có chú thích của chúng tôi bây giờ sẽ trông như thế này @Before:
package user;

import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

import static org.junit.Assert.*;

public class UserTest {
    private User user;
    private User user1;
    private User user2;

    @Before
    public void setUp() throws Exception {
        user = new User("Eugene", 35, Sex.MALE);
        user1 = new User("Marina", 34, Sex.FEMALE);
        user2 = new User("Alina", 7, Sex.FEMALE);
    }

    @Test
    public void getAllUsers() {
        List<User> expected = User.getAllUsers();

        List<User> actual = new ArrayList<>();
        actual.add(user);
        actual.add(user1);
        actual.add(user2);

        Assert.assertEquals(expected, actual);
    }

    @Test
    public void getAllUsers_NO_NULL() {
        List<User> expected = User.getAllUsers();
        Assert.assertNotNull(expected);
    }

    @Test
    public void getAllUsers_MALE() {
        List<User> expected = User.getAllUsers(Sex.MALE);

        List<User> actual = new ArrayList<>();
        actual.add(user);

        Assert.assertEquals(expected, actual);
    }

    @Test
    public void getAllUsers_MALE_NO_NULL() {
        //add check for null
        List<User> expected = User.getAllUsers(Sex.MALE);
        Assert.assertNotNull(expected);
    }

    @Test
    public void getAllUsers_FEMALE() {
        List<User> expected = User.getAllUsers(Sex.FEMALE);

        List<User> actual = new ArrayList<>();
        actual.add(user1);
        actual.add(user2);

        Assert.assertEquals(expected, actual);
    }

    @Test
    public void getAllUsers_FEMALE_NO_NULL() {
        //add check for null
        List<User> expected = User.getAllUsers(Sex.FEMALE);
        Assert.assertNotNull(expected);
    }

    @Test
    public void getHowManyUsers() {
        int expected = User.getHowManyUsers();

        int actual = 3;

        Assert.assertEquals(expected, actual);
    }

    @Test
    public void getHowManyUsers_MALE() {
        int expected = User.getHowManyUsers(Sex.MALE);

        int actual = 1;

        Assert.assertEquals(expected, actual);
    }

    @Test
    public void getHowManyUsers_FEMALE() {
        int expected = User.getHowManyUsers(Sex.FEMALE);

        int actual = 2;

        Assert.assertEquals(expected, actual);
    }

    @Test
    public void getAllAgeUsers() {
        int expected = User.getAllAgeUsers();

        int actual = 35 + 34 + 7;

        Assert.assertEquals(expected, actual);
    }

    @Test
    public void getAllAgeUsers_MALE() {
        int expected = User.getAllAgeUsers(Sex.MALE);

        int actual = 35;

        Assert.assertEquals(expected, actual);
    }

    @Test
    public void getAllAgeUsers_FEMALE() {
        int expected = User.getAllAgeUsers(Sex.FEMALE);

        int actual = 34 + 7;

        Assert.assertEquals(expected, actual);
    }
}
Chà, còn bạn thì sao, nó đã thú vị hơn và dễ đọc hơn;) Đây là danh sách các chú thích dành cho JUnit, việc sử dụng chúng chắc chắn sẽ dễ dàng hơn.
@Test – определяет что метод method() является тестовым.
@Before – указывает на то, что метод будет выполнятся перед каждым тестируемым методом @Test.
@After – указывает на то что метод будет выполнятся после каждого тестируемого метода @Test
@BeforeClass – указывает на то, что метод будет выполнятся в начале всех тестов,
а точней в момент запуска тестов(перед всеми тестами @Test).
@AfterClass – указывает на то, что метод будет выполнятся после всех тестов.
@Ignore – говорит, что метод будет проигнорирован в момент проведения тестирования.
(expected = Exception.class) – указывает на то, что в данном тестовом методе
вы преднамеренно ожидаете Exception.
(timeout = 100) – указывает, что тестируемый метод не должен занимать больше чем 100 миллисекунд.
Các phương thức lớp chính Assertđể kiểm tra:
fail(String) – указывает на то что бы тестовый метод завалился при этом выводя текстовое сообщение.
assertTrue([message], boolean condition) – проверяет, что логическое condition истинно.
assertsEquals([String message], expected, actual) – проверяет, что два значения совпадают.
Примечание: для массивов проверяются ссылки, а не содержание массивов.
assertNull([message], object) – проверяет, что an object является пустым null.
assertNotNull([message], object) – проверяет, что an object не является пустым null.
assertSame([String], expected, actual) – проверяет, что обе переменные относятся к одному an objectу.
assertNotSame([String], expected, actual) – проверяет, что обе переменные относятся к разным an objectм.
Đây là cách chúng ta có thể thêm phụ thuộc JUnit 4.12 vào Maven
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.12</version>
  <scope>test</scope>
</dependency>
tiếp tục ở đây -> JUnit phần II
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION