JavaRush /Блоги Java /Random-TG /Юнит қисми I

Юнит қисми I

Дар гурӯҳ нашр шудааст

JUnit :: ё чӣ гуна валидатори JavaRush -ро дӯст доштан мумкин аст

Қисми 1 - 1Дар бораи чӣ ба мо ин ҳайвони ваҳшӣ лозим аст? JUnit чаҳорчӯбаест, ки ба таври худкор санҷиши рамзи хуб ё на он қадар хуб аст . Шумо метавонед бигӯед: - Чаро ба ман ин чархиш лозим аст, ман метавонам ба осонӣ ва ба осонӣ рамзи хуби Java-ро санҷам. Метавонед бисёр матнҳои муқаддимавӣ нависед, аммо ман чандон шоир нестам, биёед сари кор равем...

Объект эҷод кунед

Ҳамин тавр, барои санҷидани чизе, ба мо аввал an objectи санҷишӣ лозим аст. Дар назди мо вазифа истодааст.
  1. Ба мо an objectе лозим аст, ки маълумотро дар бораи корбар нигоҳ дорад.
    1. Id - бояд бо тартибе, ки корбари нав илова карда шудааст, ҳисоб карда шавад.
    2. Номи корбар.
    3. Синну соли ӯ.
    4. Ҷинс (мард/зан)
  2. Нигоҳ доштани рӯйхати истифодабарандагонро таъмин кардан лозим аст.

  3. Синф бояд қодир бошад.

    1. Рӯйхати ҳамаи корбаронро эҷод кунед.
    2. Рӯйхати корбаронро аз рӯи ҷинс эҷод кунед (MALE/FEMALE).
    3. Шумораи корбаронро дар рӯйхати умумӣ баргардонед ва рақамро дар асоси ҷинси корбар ҳисоб кунед.
    4. Маблағи умумиро аз рӯи синну соли корбар ҳисоб кунед ва инчунин ҷинсро ба назар гиред.
    5. Синну соли миёнаро ҳам дар маҷмӯъ ва ҳам аз рӯи ҷинс ҳисоб кунед.
Ва ҳамин тавр, биёед ба сохтани an object шурӯъ кунем... Биёед синфи 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;
Ҳамин тавр, ба назар чунин мерасад, ки мо майдонҳоро ҷудо кардаем, биёед барои an objectи худ конструктор ва барои майдонҳои id, name, age, гетерҳо нависед sex. Бо гетера ҳеҷ чизи мушкиле нест, биёед аз IDEA кӯмак пурсем , вай ҳеҷ гоҳ рад намекунад ва мо конструкторро каме душвор мегардонем. Конструктор тавонистааст. Майдонҳоро оғоз кунед, санҷед, ки оё чунин an object allUsersдар countId++. Ва инчунин майдонро оғоз кунед, allUsers агар он ҳанӯз оғоз нашуда бошад. Барои роҳати ҷустуҷӯи an objectҳои якхела, мо усулҳоро аз нав муайян мекунем equals()ва боз аз IDEA-иhashCode() маҳбуби худ кӯмак мепурсем ва аз рӯи майдонҳо , , муқоиса мекунем . Илова бар ин, биёед як усули хусусӣ эҷод кунем , ки тафтиш мекунад, ки оё чунин an object дар рӯйхат мавҷуд аст. 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 +
            '}';
}
Акнун вакти ба амал баровардани мантики усулхои зарурй расидааст. Азбаски мантиқ асосан бо майдонҳои статикӣ кор хоҳад кард, мо усулҳоро низ статикӣ хоҳем кард; онҳо барои an objectҳо лозим нестанд.
  1. Рӯйхати ҳамаи корбаронро эҷод кунед.
  2. Рӯйхати корбаронро аз рӯи ҷинс эҷод кунед (MALE/FEMALE).
  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);
    }

    Аҷаб, мо an objectи зарурӣ ва рафтори онро тавсиф кардем. Акнун мо метавонем ба JUnit гузарем , аммо аввал ман ба шумо нишон медиҳам, ки агар мо онро дар main иҷро кунем, санҷиши оддӣ чӣ гуна хоҳад буд .

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

    Натиҷаи консол ба ин монанд хоҳад буд ва пас мо муқоиса мекунем, ки оё мо кори муқаррарӣ дорем. Мо метавонем, албатта, амиқтар равем, мантиқи муқоисаро нависем ва бубинем, ки ҳисобамон чӣ мегӯяд, ҳарчанд боварӣ надорем, ки мо ҳама чизро таъмин карда тавонистем.

    //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 интихоб кунед, Қисми 1 - 2пас мо чунин тирезаро мебинем, дар сатри ҷустуҷӯ "junit:junit:4.12" -ро ворид кунед. , интизор шавед, ки он пайдо шавад -> Хуб! -> Хуб! Қисми I - 3Шумо бояд ин натиҷаро ба даст оред Қисми 1 - 4OK ро пахш кунед, табрикот JUnit ба лоиҳа илова карда шуд. Биёед пеш равем. Ҳоло мо бояд барои синфи Java-и худ тестҳо эҷод кунем, курсорро ба номи синф гузорем User -> Alt + Enter -ро пахш кунед -> Эҷоди Test-ро интихоб кунед. Мо бояд равзанаро бубинем, ки дар он мо китобхонаи JUnit4-ро интихоб кунем -> усулҳоеро интихоб кунем, ки мо озмоиш мекунем -> Хуб Қисми I - 5Худи идея синф эҷод мекунад UserTest, ин синфест, ки дар он мо codeи худро бо санҷишҳо фаро мегирем. Биёед оғоз кунем:

Аввалин @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(воқеӣ, интизорӣ) истифода бурда мешавад ва мо руйхатхои тафтишшуда ва чорй ба он мегузарем. Ин усул an objectҳоро дар рӯйхатҳои пешниҳодшуда месанҷад ва натиҷаи санҷишро бармегардонад. Ин усул ҳамаи майдонҳои an objectҳоро муқоиса мекунад, ҳатто агар мерос вуҷуд дошта бошад, аз майдонҳои волидайн мегузарад. Имтихони якумро гузаронем... Қисми 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);
}
мо озмоишро мегузаронем ва чунинро мебинем: Қисми I - 7Акнун мо метавонем каме ба сабаби нокомии санҷиш назар кунем. Дар ин ҷо мо мебинем, ки дар рӯйхати тафтишшуда назар ба рӯйхати ҷорӣ корбарон зиёдтаранд. Сабаби нокомй дар хамин аст. Оё мо метавонем инро дар асосӣ тафтиш кунем? JUnit : main = 1 : 0. Биёед бубинем, ки санҷиш чӣ гуна хоҳад буд, агар он an objectҳои тамоман гуногунро дар бар гирад, биёед инро чунин иҷро кунем:
@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);
}
Ин аст он чизе ки дар консол хоҳад буд: Қисми 1 - 8дар ин ҷо шумо метавонед фавран бинед, ки дар рӯйхатҳои муқоисашуда корбарони гуногун мавҷуданд, мо инчунин метавонем <Click-ро пахш кунем, то фарқиятро бубинем> мо равзанае мегирем, ки дар он мо ба таври муфассал бубинем, ки кадом маълумот дар мо мавҷуд аст. мушкилот бо. IDEA ҳамаи соҳаҳоеро, ки фарқиятҳо мавҷуданд, таъкид хоҳанд кард. Қисми 1 - 9mainин метавонад рӯй диҳад? - Не. getAllUsers()JUnit : main = 2 : 0 Хуб, биёед идома диҳем, мо то ҳол як қатор усулҳое дорем, ки бояд бо санҷишҳо фаро гирифта шаванд), аммо мунтазир бошед, санҷед, ки оё усул ба мо бармегардад , бад нест , зеро ин мо бо nullсупоришҳои JavaRush чӣ кор мекунем , ки аз ҷониби валидатор гирифта шудааст). Биёед, ин корро кунем, ин се копейка аст...
@Test
public void getAllUsers_NO_NULL() {
    //add check for null
    List<User> expected = User.getAllUsers();
    Assert.assertNotNull(expected);
}
Бале, бале, тақрибан ҳамин тавр валидатор codeи ифлосиnull моро мегирад ;) Акнун биёед ин санҷишро иҷро кунем ва бубинем, ки он ба мо чӣ нишон медиҳад. Ва он хато нишон медиҳад, чӣ тавр???? Чӣ гуна метавон дар ин ҷо хатои санҷишӣ содир кард))) Ҷузъи I - 10Ва дар ин ҷо мо метавонем аввалин меваҳои пӯшонидани codeи худро бо санҷишҳо ба даст орем. Тавре ки шумо дар ёд доред, allUsers мо майдонро дар конструктор оғоз кардем, яъне ҳангоми занг задан ба метод getAllUsers()мо ба an objectе муроҷиат мекунем, ки ҳанӯз оғоз нашудааст. Биёед онро таҳрир кунем, инициализатсияро аз конструктор хориҷ кунем ва онро ҳангоми эълони майдон иҷро кунем.
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);
        }
    }
Биёед санҷишро иҷро кунем, ҳоло ҳама чиз хуб аст. Ҷузъи 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 қисми II
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION