JavaRush /مدونة جافا /Random-AR /جونيت الجزء الأول

جونيت الجزء الأول

نشرت في المجموعة

JUnit :: أو كيف تحب أداة التحقق من الصحة JavaRush

الوحدة الجزء الأول - 1باختصار عن سبب حاجتنا لهذا الوحش؟ JUnit هو إطار عمل لاختبار التعليمات البرمجية الجيدة أو غير الجيدة تلقائيًا . يمكنك أن تقول: - لماذا أحتاج إلى هذا التأرجح، يمكنني بسهولة وببساطة اختبار كود Java الجيد الخاص بي. يمكنك كتابة الكثير من الكلمات التمهيدية، لكنني لست شاعرًا كثيرًا، فلنبدأ العمل...

إنشاء كائن

وهكذا، من أجل اختبار شيء ما، نحتاج أولاً إلى كائن اختبار. لدينا مهمة أمامنا.
  1. نحن بحاجة إلى كائن يقوم بتخزين معلومات حول المستخدم.
    1. المعرف - يجب أن يتم حسابه بالترتيب الذي تمت به إضافة المستخدم الجديد.
    2. اسم المستخدم.
    3. عمره.
    4. الجنس ذكر أنثى)
  2. فمن الضروري توفير تخزين قائمة المستخدمين.

  3. يجب أن يكون الفصل قادرًا على ذلك.

    1. إنشاء قائمة بجميع المستخدمين.
    2. إنشاء قائمة بالمستخدمين حسب الجنس (ذكر/أنثى).
    3. إرجاع عدد المستخدمين في القائمة العامة، وحساب العدد بناءً على جنس المستخدم.
    4. قم بحساب المبلغ الإجمالي حسب عمر المستخدم، مع مراعاة الجنس أيضًا.
    5. احسب متوسط ​​العمر، بشكل عام وحسب الجنس.
وهكذا، لنبدأ في إنشاء كائن... لنقم بإنشاء فئة Java 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. لا يوجد شيء معقد مع المغايرين، فلنطلب المساعدة من IDEA ، ولن ترفض أبدًا، وسنجعل المُنشئ صعبًا بعض الشيء. سيكون المصمم قادرًا على ذلك. قم بتهيئة الحقول، وتحقق مما إذا كان هناك مثل هذا الكائن في allUsers، وإذا لم يكن هناك مثل هذا الكائن، فقم بزيادة العداد الخاص بنا countId++وإضافته إلى قائمة جميع المستخدمين. وقم أيضًا بتهيئة الحقل allUsers إذا لم تتم تهيئته بعد. لتسهيل البحث عن كائنات متطابقة، سنعيد تعريف الأساليب ، equals()وسنطلب hashCode()المساعدة مرة أخرى من IDEA المحبوب لدينا ونقارن حسب الحقول name،،، age. sexبالإضافة إلى ذلك، فلنقم بإنشاء طريقة خاصة hasUser()للتحقق مما إذا كان هذا الكائن موجودًا في القائمة.
@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 -> المكتبات -> انقر + (مكتبة مشروع جديد) -> اختر من Maven، الوحدة الجزء الأول – 2ثم نرى مثل هذه النافذة، أدخل "junit:junit:4.12" في شريط البحث ، انتظر حتى يجد -> حسنًا! -> حسنًا! الوحدة الجزء الأول – 3يجب أن تحصل على هذه النتيجة الوحدة الجزء الأول - 4انقر فوق "موافق"، تهانينا لقد تمت إضافة JUnit إلى المشروع. هيا لنذهب. نحن الآن بحاجة إلى إنشاء اختبارات لفئة Java الخاصة بنا، ضع المؤشر على اسم الفئة User -> اضغط على Alt + Enter -> حدد إنشاء اختبار. يجب أن نرى نافذة نحتاج فيها إلى تحديد مكتبة JUnit4 -> تحديد الأساليب التي سنختبرها -> حسنًا. الوحدة الجزء الأول - 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()-> أنشئ قائمة actual نضع فيها المستخدمين الذين نفترض أن getAllUsers()طريقة Assert.assertEquals (فعلية، متوقعة) سيتم استخدامها وسنقوم بتمرير القوائم التي تم فحصها والحالية إليها. ستقوم هذه الطريقة باختبار الكائنات الموجودة في القوائم المتوفرة وإرجاع نتيجة الاختبار. ستقارن الطريقة جميع مجالات الكائنات، حتى من خلال حقول الوالدين إذا كان هناك ميراث. لنجري الاختبار الأول... الوحدة الجزء الأول – 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);
}
نقوم بإجراء الاختبار ونرى ما يلي: الوحدة الجزء الأول – 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);
}
هذا ما سيكون في وحدة التحكم: الوحدة الجزء الأول – 8هنا يمكنك على الفور أن ترى أن هناك مستخدمين مختلفين في القوائم المقارنة، ويمكننا أيضًا النقر فوق <انقر لرؤية الفرق> سنحصل على نافذة يمكننا من خلالها رؤية البيانات التي لدينا بالتفصيل مشكلة مع. ستقوم IDEA بتسليط الضوء على جميع المجالات التي توجد بها اختلافات. الوحدة الجزء الأول - 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 الخاص بنا ؛) الآن دعنا نجري هذا الاختبار ونرى ما يظهره لنا. وسيظهر خطأ كيف؟؟؟؟ كيف يمكن حدوث خطأ في الاختبار هنا))) الوحدة الجزء الأول - 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);
        }
    }
لنجري الاختبار، الآن كل شيء على ما يرام. الوحدة الجزء الأول – 11لا أعتقد أنه سيكون من السهل اكتشاف NPEs بشكل رئيسي، وأعتقد أنك ستوافق على أن العدد هو 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 الجزء الثاني
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION