JavaRush /وبلاگ جاوا /Random-FA /JUnit قسمت اول

JUnit قسمت اول

در گروه منتشر شد

JUnit :: یا چگونه اعتبار دهنده JavaRush را دوست داشته باشیم

JUnit قسمت I - 1به طور خلاصه در مورد اینکه چرا به این جانور نیاز داریم؟ JUnit چارچوبی برای تست خودکار کد خوب یا نه چندان خوب شماست . می توانید بگویید: - چرا به این تاب نیاز دارم، می توانم به راحتی و به سادگی کد جاوای خوب خود را تست کنم. شما می توانید غزل های مقدماتی زیادی بنویسید، اما من زیاد شاعر نیستم، بیایید دست به کار شویم...

یک شی ایجاد کنید

و بنابراین، برای آزمایش چیزی، ابتدا به یک شیء آزمایشی نیاز داریم. ما وظیفه ای در پیش داریم.
  1. ما به یک شی نیاز داریم که اطلاعات کاربر را ذخیره کند.
    1. شناسه - باید به ترتیب اضافه شدن کاربر جدید شمارش شود.
    2. نام کاربری.
    3. سنش.
    4. جنسیت مذکر مونث)
  2. لازم است ذخیره سازی لیستی از کاربران فراهم شود.

  3. کلاس باید بتواند.

    1. لیستی از همه کاربران ایجاد کنید.
    2. فهرستی از کاربران بر اساس جنسیت (مرد/زن) ایجاد کنید.
    3. تعداد کاربران را در لیست کلی برگردانید و تعداد را بر اساس جنسیت کاربر محاسبه کنید.
    4. کل مبلغ را بر اساس سن کاربر محاسبه کنید و جنسیت را نیز در نظر بگیرید.
    5. میانگین سنی را هم به طور کلی و هم بر اساس جنسیت محاسبه کنید.
و بنابراین، بیایید شروع به ایجاد یک شی کنیم... بیایید یک کلاس جاوا ایجاد کنیم Userکه حاوی فیلدها باشد:
private int id;
private String name;
private int age;
private Sex sex;
این برای ذخیره داده های کاربر کافی است، بیایید ببینیم چه چیز دیگری برای کار مورد نیاز است. ما باید به نحوی همه کاربران را ذخیره کنیم، بیایید یک فیلد ثابت در کلاس خود ایجاد کنیم allUsers، فکر می کنم مشکلی نیست اگر این باشدMap<Integer, User>
private static Map<Integer, User> allUsers;
ما همچنین باید به نحوی یک شماره دنباله به کاربران اختصاص دهیم، بیایید یک فیلد شمارنده ثابت ایجاد کنیم، که هنگام ایجاد یک کاربر جدید، یک شماره دنباله Id به کاربر اختصاص می دهد.
private static int countId = 0;
بنابراین، به نظر می‌رسد که ما فیلدها را مرتب کرده‌ایم، بیایید یک سازنده برای شیء خود بنویسیم، و دریافت‌کننده برای فیلدها id، name, age. sexهیچ چیز پیچیده ای در مورد heterae وجود ندارد، بیایید از IDEA کمک بخواهیم ، ​​او هرگز رد نمی کند، و ما سازنده را کمی مشکل می کنیم. طراح قادر خواهد بود. فیلدها را مقداردهی اولیه کنید، بررسی کنید که آیا چنین شی ای در وجود دارد یا خیر allUsers، اگر چنین شیئی وجود ندارد، شمارنده ما را افزایش دهید countId++و آن را به لیست همه کاربران اضافه کنید. و همچنین اگر فیلد allUsers هنوز مقداردهی اولیه نشده باشد مقداردهی اولیه کنید. برای راحتی جستجو برای اشیاء یکسان، روش ها را دوباره تعریف می کنیم و equals()مجدداً از IDEAhashCode() محبوب خود کمک می خواهیم و با فیلدها مقایسه می کنیم . به علاوه، بیایید یک روش خصوصی ایجاد کنیم که بررسی می کند آیا چنین شی در لیست وجود دارد یا خیر. nameagesexhasUser()
@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);
}
در نهایت، من به یک طراح مانند این رسیدم.
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);
    }
}
و یک روش کمکی خصوصی
private boolean hasUser(){
    for (User user : allUsers.values()){
        if (user.equals(this) && user.hashCode() == this.hashCode()){
            return true;
        }
    }
    return false;
}
و همچنین تعریف مجددtoString()
@Override
public String toString() {
    return "User{" +
            "id=" + id +
            ", name='" + name + '\'' +
            ", age=" + age +
            ", sex=" + sex +
            '}';
}
حال نوبت به پیاده سازی منطق روش های مورد نیاز می رسد. از آنجایی که منطق عمدتاً با فیلدهای ثابت کار می کند، روش ها را نیز ثابت می کنیم؛ آنها برای اشیا مورد نیاز نیستند.
  1. لیستی از همه کاربران ایجاد کنید.
  2. فهرستی از کاربران بر اساس جنسیت (مرد/زن) ایجاد کنید.
  3. نقاط a و b را می‌توان با روشی getAllUsers()که فهرستی از همه را برمی‌گرداند User، و یک روش بارگذاری شده getAllUsers(Sex sex)که بسته به پارامتر ارسال شده، فهرستی را برمی‌گرداند، به خوبی مدیریت کرد 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. تعداد کاربران را در لیست کلی برگردانید و تعداد را بر اساس جنسیت کاربر محاسبه کنید.

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

  5. کل مبلغ را بر اساس سن کاربر محاسبه کنید و جنسیت را نیز در نظر بگیرید. بیایید روش هایی برای این کار ایجاد کنیم.

    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. میانگین سنی را هم به طور کلی و هم بر اساس جنسیت محاسبه کنید.

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

    عالی است، ما شی مورد نیاز و رفتار آن را شرح داده ایم. اکنون می‌توانیم به JUnit برویم ، اما ابتدا به شما نشان می‌دهم که اگر آن را به صورت اصلی انجام دهیم، یک آزمایش ساده چگونه خواهد بود .

    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("================================================");
    }

    خروجی کنسول چیزی شبیه به این خواهد بود، و سپس مقایسه می کنیم که آیا عملکرد عادی داشته ایم یا خیر. البته می‌توانیم عمیق‌تر برویم، منطق مقایسه بنویسیم و ببینیم که محاسبه‌مان چه می‌گوید، حتی اگر مطمئن نباشیم که قادر به تامین همه چیز بوده‌ایم.

    //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

    ما از این نتیجه راضی نیستیم، در کنار تست های اصلی ، ما به JUnit نیاز داریم .

نحوه اتصال JUnit به پروژه

این سوال پیش می آید که چگونه آن را به پروژه متصل کنیم. برای کسانی که می دانند، من گزینه Maven را انتخاب نمی کنم ، زیرا این یک داستان کاملا متفاوت است. ؛) ساختار پروژه را باز کنید Ctrl + Alt + Shift + S -> Libraries -> کلیک کنید + (New Project Library) -> از Maven انتخاب کنید، JUnit قسمت I - 2سپس چنین پنجره ای را مشاهده می کنیم، "junit:junit:4.12" را در نوار جستجو وارد کنید. ، صبر کنید تا پیدا شود -> OK! -> باشه! JUnit قسمت I - 3شما باید این نتیجه را دریافت کنید JUnit قسمت I - 4OK را کلیک کنید، تبریک می گویم JUnit به پروژه اضافه شده است. بیایید ادامه دهیم. اکنون باید برای کلاس جاوا تست هایی ایجاد کنیم، مکان نما را روی نام کلاس قرار دهیم User -> Alt + Enter را فشار دهید -> ایجاد Test را انتخاب کنید. ما باید پنجره ای را ببینیم که در آن باید کتابخانه JUnit4 را انتخاب کنیم -> روش هایی را که قرار است آزمایش کنیم را انتخاب کنیم -> OK JUnit قسمت I - 5ایده خود یک کلاس ایجاد می کند UserTest، این کلاسی است که در آن کد خود را با تست ها پوشش می دهیم. بیا شروع کنیم:

اولین @Test ما

بیایید اولین روش @TestgetAllUsers() خود را ایجاد کنیم - این روشی است که باید همه کاربران را برگرداند. آزمایش چیزی شبیه به این خواهد بود:
@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);
}
در اینجا ما چندین کاربر آزمایشی ایجاد می کنیم -> لیستی ایجاد می کنیم expected که در آن کاربرانی را که متد آنها به ما باز می گردد قرار می دهیم getAllUsers()-> لیستی ایجاد می کنیم که در آن کاربرانی را که فرض می کنیم متد Assert.assertEquals (واقعی، مورد انتظار) هستند، actual قرار می دهیم. getAllUsers()استفاده خواهد شد و ما لیست های بازرسی شده و جاری را به آن منتقل می کنیم. این روش اشیاء موجود در لیست های ارائه شده را آزمایش می کند و نتیجه آزمایش را برمی گرداند. این روش تمام فیلدهای اشیاء را مقایسه می کند، حتی اگر ارثی وجود داشته باشد، از فیلدهای والدین نیز عبور می کند. بیایید اولین تست را اجرا کنیم... JUnit قسمت I - 6تست با موفقیت به پایان رسید. حالا بیایید سعی کنیم تست را شکست دهیم، برای این کار باید یکی از لیست های تست را تغییر دهیم، این کار را با اضافه شدن یک کاربر به لیست انجام می دهیم 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);
}
تست را اجرا می کنیم و موارد زیر را می بینیم: JUnit قسمت I - 7حالا می توانیم کمی به دلیل شکست تست نگاه کنیم. در اینجا می بینیم که تعداد کاربران در لیست بازرسی شده بیشتر از لیست فعلی است. این دلیل شکست است. آیا می توانیم این را به صورت اصلی بررسی کنیم؟ JUnit : main = 1 : 0. بیایید ببینیم تست اگر شامل اشیاء کاملاً متفاوت باشد چگونه خواهد بود، بیایید آن را به این صورت انجام دهیم:
@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);
}
این همان چیزی است که در کنسول وجود خواهد داشت: JUnit قسمت I - 8در اینجا بلافاصله می توانید ببینید که کاربران مختلفی در لیست های مقایسه شده وجود دارد، همچنین می توانیم روی <کلیک کنید تا تفاوت را مشاهده کنید> ما پنجره ای را دریافت می کنیم که در آن می توانیم به طور دقیق ببینیم چه داده هایی داریم. مشکل با. IDEA تمام زمینه هایی را که در آنها تفاوت وجود دارد برجسته می کند. JUnit قسمت I - 9mainآیا این اتفاق می افتد؟ - نه JUnit : main = 2 : 0 خوب، بیایید ادامه دهیم، ما هنوز یکسری روش داریم که باید با آزمایش پوشانده شوند)، اما صبر کنید، بد نیست بررسی کنیم که آیا روش به ما getAllUsers()برمی گردد یا خیر، زیرا این کاری که ما با nullوظایف JavaRush که توسط اعتبار سنجی دستگیر شده انجام می دهیم). بیایید این کار را انجام دهیم، موضوع سه کوپک است ...
@Test
public void getAllUsers_NO_NULL() {
    //add check for null
    List<User> expected = User.getAllUsers();
    Assert.assertNotNull(expected);
}
بله، بله، تقریباً به این صورت است که اعتباردهنده کدهای مخربnull ما را می گیرد ؛) حالا بیایید این آزمایش را اجرا کنیم و ببینیم چه چیزی به ما نشان می دهد. و ارور نشون میده چطوری؟؟؟؟ چگونه ممکن است یک خطای تست در اینجا ایجاد شود))) JUnit قسمت I - 10و در اینجا می توانیم اولین ثمره پوشاندن کد خود را با تست ها درو کنیم. همانطور که به یاد دارید، allUsers فیلد را در سازنده مقداردهی اولیه کردیم، به این معنی که هنگام فراخوانی متد getAllUsers()، به شیئی اشاره خواهیم کرد که هنوز مقداردهی اولیه نشده است. بیایید آن را ویرایش کنیم، مقدار دهی اولیه را از سازنده حذف کنیم، و این کار را هنگام اعلام فیلد انجام دهیم.
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);
        }
    }
بیایید تست را اجرا کنیم، اکنون همه چیز خوب است. JUnit قسمت I - 11من فکر نمی کنم که گرفتن NPE ها در حالت اصلی آسان باشد، فکر می کنم شما موافق باشید که شمارش JUnit است: main = 3: 0 سپس تمام روش ها را با تست ها پوشش می دهم و اجازه می دهم ببینید چگونه به نظر می رسد. ... اکنون کلاس آزمایشی ما به شکل زیر است:
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);
    }
}
بله، معلوم شد که کوچک نیست، اما هنگام کار با پروژه های بزرگ چه اتفاقی خواهد افتاد. در اینجا چه چیزی را می توان کاهش داد؟بعد از ارزیابی همه چیز، می بینید که ما در هر آزمون داده های تست را ایجاد می کنیم و در اینجا حاشیه نویسی به کمک ما می آید. بیایید بگیریم @Before- حاشیه نویسی @Beforeنشان می دهد که روش قبل از هر روش آزمایش شده اجرا می شود @Test. اکنون کلاس آزمایشی ما با حاشیه نویسی به این صورت است @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);
    }
}
خوب، شما چطور، در حال حاضر خواندن آن سرگرم‌کننده‌تر و آسان‌تر است؛) در اینجا فهرستی از حاشیه‌نویسی‌ها برای JUnit وجود دارد، قطعا زندگی با آنها آسان‌تر است.
@Test – определяет что метод method() является тестовым.
@Before – указывает на то, что метод будет выполнятся перед каждым тестируемым методом @Test.
@After – указывает на то что метод будет выполнятся после каждого тестируемого метода @Test
@BeforeClass – указывает на то, что метод будет выполнятся в начале всех тестов,
а точней в момент запуска тестов(перед всеми тестами @Test).
@AfterClass – указывает на то, что метод будет выполнятся после всех тестов.
@Ignore – говорит, что метод будет проигнорирован в момент проведения тестирования.
(expected = Exception.class) – указывает на то, что в данном тестовом методе
вы преднамеренно ожидаете Exception.
(timeout = 100) – указывает, что тестируемый метод не должен занимать больше чем 100 миллисекунд.
روش های کلاس اصلی Assertبرای بررسی:
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м.
به این ترتیب می توانیم وابستگی JUnit 4.12 را در Maven اضافه کنیم
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.12</version>
  <scope>test</scope>
</dependency>
ادامه اینجا -> JUnit part II
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION