JUnit :: یا چگونه اعتبار دهنده JavaRush را دوست داشته باشیم
به طور خلاصه در مورد اینکه چرا به این جانور نیاز داریم؟ JUnit چارچوبی برای تست خودکار کد خوب یا نه چندان خوب شماست . می توانید بگویید: - چرا به این تاب نیاز دارم، می توانم به راحتی و به سادگی کد جاوای خوب خود را تست کنم. شما می توانید غزل های مقدماتی زیادی بنویسید، اما من زیاد شاعر نیستم، بیایید دست به کار شویم...یک شی ایجاد کنید
و بنابراین، برای آزمایش چیزی، ابتدا به یک شیء آزمایشی نیاز داریم. ما وظیفه ای در پیش داریم.- ما به یک شی نیاز داریم که اطلاعات کاربر را ذخیره کند.
- شناسه - باید به ترتیب اضافه شدن کاربر جدید شمارش شود.
- نام کاربری.
- سنش.
- جنسیت مذکر مونث)
-
لازم است ذخیره سازی لیستی از کاربران فراهم شود.
-
کلاس باید بتواند.
- لیستی از همه کاربران ایجاد کنید.
- فهرستی از کاربران بر اساس جنسیت (مرد/زن) ایجاد کنید.
- تعداد کاربران را در لیست کلی برگردانید و تعداد را بر اساس جنسیت کاربر محاسبه کنید.
- کل مبلغ را بر اساس سن کاربر محاسبه کنید و جنسیت را نیز در نظر بگیرید.
- میانگین سنی را هم به طور کلی و هم بر اساس جنسیت محاسبه کنید.
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()
محبوب خود کمک می خواهیم و با فیلدها مقایسه می کنیم . به علاوه، بیایید یک روش خصوصی ایجاد کنیم که بررسی می کند آیا چنین شی در لیست وجود دارد یا خیر. 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 -> Libraries -> کلیک کنید + (New Project Library) -> از Maven انتخاب کنید، سپس چنین پنجره ای را مشاهده می کنیم، "junit:junit:4.12" را در نوار جستجو وارد کنید. ، صبر کنید تا پیدا شود -> OK! -> باشه! شما باید این نتیجه را دریافت کنید OK را کلیک کنید، تبریک می گویم JUnit به پروژه اضافه شده است. بیایید ادامه دهیم. اکنون باید برای کلاس جاوا تست هایی ایجاد کنیم، مکان نما را روی نام کلاس قرار دهیمUser
-> Alt + Enter را فشار دهید -> ایجاد Test را انتخاب کنید. ما باید پنجره ای را ببینیم که در آن باید کتابخانه JUnit4 را انتخاب کنیم -> روش هایی را که قرار است آزمایش کنیم را انتخاب کنیم -> OK ایده خود یک کلاس ایجاد می کند 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()
استفاده خواهد شد و ما لیست های بازرسی شده و جاری را به آن منتقل می کنیم. این روش اشیاء موجود در لیست های ارائه شده را آزمایش می کند و نتیجه آزمایش را برمی گرداند. این روش تمام فیلدهای اشیاء را مقایسه می کند، حتی اگر ارثی وجود داشته باشد، از فیلدهای والدین نیز عبور می کند. بیایید اولین تست را اجرا کنیم... تست با موفقیت به پایان رسید. حالا بیایید سعی کنیم تست را شکست دهیم، برای این کار باید یکی از لیست های تست را تغییر دهیم، این کار را با اضافه شدن یک کاربر به لیست انجام می دهیم 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);
}
}
بیایید تست را اجرا کنیم، اکنون همه چیز خوب است. من فکر نمی کنم که گرفتن 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
GO TO FULL VERSION