JUnit :: أو كيف تحب أداة التحقق من الصحة JavaRush
باختصار عن سبب حاجتنا لهذا الوحش؟ JUnit هو إطار عمل لاختبار التعليمات البرمجية الجيدة أو غير الجيدة تلقائيًا . يمكنك أن تقول: - لماذا أحتاج إلى هذا التأرجح، يمكنني بسهولة وببساطة اختبار كود 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 +
'}';
}
حان الوقت الآن لتنفيذ منطق الطرق المطلوبة. نظرًا لأن المنطق سيعمل بشكل أساسي مع الحقول الثابتة، فسنجعل الأساليب أيضًا ثابتة، ولن تكون هناك حاجة إليها للكائنات.
- إنشاء قائمة بجميع المستخدمين.
- إنشاء قائمة بالمستخدمين حسب الجنس (ذكر/أنثى).
-
إرجاع عدد المستخدمين في القائمة العامة، وحساب العدد بناءً على جنس المستخدم.
public static int getHowManyUsers(){ return allUsers.size(); } public static int getHowManyUsers(Sex sex){ return getAllUsers(sex).size(); }
-
قم بحساب المبلغ الإجمالي حسب عمر المستخدم، مع مراعاة الجنس أيضًا. دعونا ننشئ طرقًا لهذه المهمة.
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; }
-
احسب متوسط العمر، بشكل عام وحسب الجنس.
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 .
يمكن التعامل مع النقطتين 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;
}
كيفية ربط JUnit بالمشروع
السؤال الذي يطرح نفسه هو كيفية ربطه بالمشروع. بالنسبة لأولئك الذين يعرفون ذلك، لن أختار خيار Maven ، لأن هذه قصة مختلفة تمامًا. ؛) افتح بنية المشروع Ctrl + Alt + Shift + S -> المكتبات -> انقر + (مكتبة مشروع جديد) -> اختر من Maven، ثم نرى مثل هذه النافذة، أدخل "junit:junit:4.12" في شريط البحث ، انتظر حتى يجد -> حسنًا! -> حسنًا! يجب أن تحصل على هذه النتيجة انقر فوق "موافق"، تهانينا لقد تمت إضافة JUnit إلى المشروع. هيا لنذهب. نحن الآن بحاجة إلى إنشاء اختبارات لفئة Java الخاصة بنا، ضع المؤشر على اسم الفئةUser
-> اضغط على Alt + Enter -> حدد إنشاء اختبار. يجب أن نرى نافذة نحتاج فيها إلى تحديد مكتبة JUnit4 -> تحديد الأساليب التي سنختبرها -> حسنًا. الفكرة نفسها ستنشئ فئة 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 (فعلية، متوقعة) سيتم استخدامها وسنقوم بتمرير القوائم التي تم فحصها والحالية إليها. ستقوم هذه الطريقة باختبار الكائنات الموجودة في القوائم المتوفرة وإرجاع نتيجة الاختبار. ستقارن الطريقة جميع مجالات الكائنات، حتى من خلال حقول الوالدين إذا كان هناك ميراث. لنجري الاختبار الأول... اكتمل الاختبار بنجاح. الآن دعونا نحاول جعل الاختبار يفشل، ولهذا نحتاج إلى تغيير إحدى قوائم الاختبار، وسنفعل ذلك من خلال التعليق على إضافة مستخدم واحد إلى القائمة 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 : 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);
}
هذا ما سيكون في وحدة التحكم: هنا يمكنك على الفور أن ترى أن هناك مستخدمين مختلفين في القوائم المقارنة، ويمكننا أيضًا النقر فوق <انقر لرؤية الفرق> سنحصل على نافذة يمكننا من خلالها رؤية البيانات التي لدينا بالتفصيل مشكلة مع. ستقوم IDEA بتسليط الضوء على جميع المجالات التي توجد بها اختلافات. main
هل يمكن أن يحدث هذا؟ - لا. 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
الخاص بنا ؛) الآن دعنا نجري هذا الاختبار ونرى ما يظهره لنا. وسيظهر خطأ كيف؟؟؟؟ كيف يمكن حدوث خطأ في الاختبار هنا))) وهنا يمكننا جني الثمار الأولى لتغطية الكود الخاص بنا بالاختبارات. كما تتذكر، 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);
}
}
لنجري الاختبار، الآن كل شيء على ما يرام. لا أعتقد أنه سيكون من السهل اكتشاف 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 الجزء الثاني
GO TO FULL VERSION