JavaRush /Blog Java /Random-PL /JUnit część I

JUnit część I

Opublikowano w grupie Random-PL

JUnit :: czyli jak pokochać walidator JavaRush

JUnit część I - 1Krótko o tym, po co nam ta bestia? JUnit to framework do automatycznego testowania dobrego lub niezbyt dobrego kodu. Możesz powiedzieć: - po co mi ten swing, mogę łatwo i prosto przetestować mój dobry kod Java. Tekstów wprowadzających można napisać wiele, ale poetą nie jestem, przejdźmy do rzeczy…

Utwórz obiekt

Aby więc coś przetestować, najpierw potrzebujemy obiektu testowego. Mamy przed sobą zadanie.
  1. Potrzebujemy obiektu, który będzie przechowywać informacje o Użytkowniku.
    1. Id - należy liczyć w kolejności dodania nowego użytkownika.
    2. Nazwa użytkownika.
    3. Jego wiek.
    4. Płeć Mężczyzna Kobieta)
  2. Konieczne jest zapewnienie przechowywania listy użytkowników.

  3. Klasa musi to umieć.

    1. Wygeneruj listę wszystkich użytkowników.
    2. Wygeneruj listę użytkowników według płci (MĘŻCZYZNA/Kobieta).
    3. Zwróć liczbę użytkowników na liście ogólnej i oblicz liczbę na podstawie płci użytkownika.
    4. Oblicz całkowitą kwotę według wieku użytkownika, a także weź pod uwagę płeć.
    5. Oblicz średni wiek, zarówno ogółem, jak i według płci.
A zatem zacznijmy tworzyć obiekt... Stwórzmy klasę Java User, która będzie zawierała pola:
private int id;
private String name;
private int age;
private Sex sex;
To wystarczy do przechowywania danych użytkownika, zobaczmy, co jeszcze jest potrzebne do tego zadania. Musimy jakoś przechować wszystkich użytkowników, zróbmy w naszej klasie pole statyczne allUsers, myślę, że będzie ok, jeśli takMap<Integer, User>
private static Map<Integer, User> allUsers;
Musimy też w jakiś sposób przypisać użytkownikom numer kolejny, utwórzmy statyczne pole licznika, które przy tworzeniu nowego użytkownika przypisze Id użytkownikowi numer kolejny.
private static int countId = 0;
Wygląda na to, że uporządkowaliśmy pola, napiszmy konstruktor dla naszego obiektu i moduły pobierające dla pól id, name, age, sex. Z heterae nie ma nic skomplikowanego, poprośmy IDEA o pomoc , ona nigdy nie odmówi, a my sprawimy, że konstruktor będzie trochę podchwytliwy. Projektant będzie mógł. Zainicjuj pola, sprawdź czy w , jest taki obiekt allUsers, jeśli takiego obiektu nie ma, następnie zwiększ nasz licznik countId++i dodaj go do listy wszystkich użytkowników. A także zainicjuj pole, allUsers jeśli nie zostało jeszcze zainicjowane. Dla wygody wyszukiwania identycznych obiektów zdefiniujemy na nowo metody equals()i hashCode()ponownie poprosimy o pomoc nasz ukochany IDEA i porównamy polami name, age, sex. Dodatkowo utwórzmy prywatną metodę hasUser(), która sprawdzi, czy taki obiekt znajduje się na liście.
@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);
}
W końcu trafiłem na takiego projektanta.
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);
    }
}
i prywatna metoda pomocnicza
private boolean hasUser(){
    for (User user : allUsers.values()){
        if (user.equals(this) && user.hashCode() == this.hashCode()){
            return true;
        }
    }
    return false;
}
a także przedefiniowaćtoString()
@Override
public String toString() {
    return "User{" +
            "id=" + id +
            ", name='" + name + '\'' +
            ", age=" + age +
            ", sex=" + sex +
            '}';
}
Teraz czas na wdrożenie logiki wymaganych metod. Ponieważ logika będzie działać głównie z polami statycznymi, uczynimy również metody statycznymi; nie są one potrzebne w przypadku obiektów.
  1. Wygeneruj listę wszystkich użytkowników.
  2. Wygeneruj listę użytkowników według płci (MĘŻCZYZNA/Kobieta).
  3. Punkty a i b można dobrze obsłużyć metodą getAllUsers(), która zwróci listę wszystkich User, oraz metodą przeciążoną getAllUsers(Sex sex), która zwróci listę, w zależności od przekazanego parametru 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. Zwróć liczbę użytkowników na liście ogólnej i oblicz liczbę na podstawie płci użytkownika.

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

  5. Oblicz całkowitą kwotę według wieku użytkownika, a także weź pod uwagę płeć. Stwórzmy metody dla tego zadania.

    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. Oblicz średni wiek, zarówno ogółem, jak i według płci.

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

    Świetnie, opisaliśmy wymagany obiekt i jego zachowanie. Teraz możemy przejść do JUnit , ale najpierw pokażę Ci, jak będzie wyglądał prosty test, jeśli zrobimy to w main .

    public static void main(String[] args) {
        new User(„Eugeniusz”, 35, Sex.MALE);
        new User("Przystań", 34, Sex.FEMALE);
        new User("Alina", 7, Sex.FEMALE);
    
    
        System.out.println("Wszyscy użytkownicy:");
        User.getAllUsers().forEach(System.out::println);
        System.out.println(„Wszyscy użytkownicy: MĘŻCZYZNA”);
        User.getAllUsers(Sex.MALE).forEach(System.out::println);
        System.out.println(„Wszyscy użytkownicy: KOBIETA”);
        User.getAllUsers(Sex.FEMALE).forEach(System.out::println);
        System.out.println("================================================");
        System.out.println(" wszyscy użytkownicy: " + User.getHowManyUsers());
        System.out.println(" wszyscy użytkownicy MĘŻCZYŹNI: " + User.getHowManyUsers(Sex.MALE));
        System.out.println(„wszyscy użytkownicy KOBIETY:” + User.getHowManyUsers(Sex.FEMALE));
        System.out.println("================================================");
        System.out.println(" łączny wiek wszystkich użytkowników: " + User.getAllAgeUsers());
        System.out.println(" łączny wiek wszystkich użytkowników MALE: " + User.getAllAgeUsers(Sex.MALE));
        System.out.println(„całkowity wiek wszystkich KOBIET:” + User.getAllAgeUsers(Sex.FEMALE));
        System.out.println("================================================");
        System.out.println(" średni wiek wszystkich użytkowników: " + User.getAverageAgeOfAllUsers());
        System.out.println(" średni wiek wszystkich użytkowników MALE: " + User.getAverageAgeOfAllUsers(Sex.MALE));
        System.out.println(„średni wiek wszystkich KOBIET:” + User.getAverageAgeOfAllUsers(Sex.FEMALE));
        System.out.println("================================================");
    }

    Dane wyjściowe konsoli będą wyglądać mniej więcej tak, a następnie porównamy, czy uzyskaliśmy normalne działanie. Możemy oczywiście zejść głębiej, napisać logikę porównawczą i zobaczyć, co wyjdzie z naszych obliczeń, choć nie będziemy pewni, czy udało nam się zapewnić wszystko.

    //output
    Все пользователи:
    User{id=1, name=„Eugeniusz”, age=35, sex=MALE}
    User{id=2, name='Przystań', age=34, sex=FEMALE}
    User{id=3, name='Alina', age=7, sex=FEMALE}
    Все пользователи: MALE
    User{id=1, name=„Eugeniusz”, age=35, sex=MALE}
    Все пользователи: FEMALE
    User{id=2, name='Przystań', 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

    Nie jesteśmy zadowoleni z tego wyniku, pomińmy główne testy , potrzebujemy JUnit .

Jak podłączyć JUnit do projektu

Powstaje pytanie jak to podłączyć do projektu. Dla wtajemniczonych nie wybiorę opcji z Mavenem , ponieważ to zupełnie inna historia. ;) Otwórz strukturę projektu Ctrl + Alt + Shift + S -> Biblioteki -> kliknij + (Nowa biblioteka projektu) -> wybierz z Mavena, JUnit część I - 2wtedy widzimy takie okno, wpisz w wyszukiwarkę „junit:junit:4.12” , poczekaj, aż znajdzie -> OK! -> OK! JUnit część I - 3Powinieneś otrzymać taki wynik. JUnit część I - 4Kliknij OK, gratulacje. JUnit został dodany do projektu. Przejdźmy dalej. Teraz musimy stworzyć testy dla naszej klasy Java, najechać kursorem na nazwę klasy User -> nacisnąć Alt + Enter -> wybrać utwórz test. Powinniśmy zobaczyć okno, w którym musimy wybrać bibliotekę JUnit4 -> wybrać metody, które będziemy testować -> OK JUnit część I - 5Sam pomysł utworzy klasę UserTest, jest to klasa w której będziemy pokrywać nasz kod testami. Zacznijmy:

Nasz pierwszy @Test

Stwórzmy naszą pierwszą metodę @TestgetAllUsers() - jest to metoda, która powinna zwrócić wszystkim użytkownikom. Test będzie wyglądał mniej więcej tak:
@Test
public void getAllUsers() {
    // utwórz dane testowe
    User user = new User(„Eugeniusz”, 35, Sex.MALE);
    User user1 = new User("Przystań", 34, Sex.FEMALE);
    User user2 = new User("Alina", 7, Sex.FEMALE);

    //utwórz oczekiwaną listę i wypełnij ją danymi naszej metody
    List<User> expected = User.getAllUsers();

    // utwórz rzeczywistą listę, umieść na niej dane do porównania
    // czego oczekujemy od metody
    List<User> actual = new ArrayList<>();
    actual.add(user);
    actual.add(user1);
    actual.add(user2);

    //uruchom test, jeśli lista oczekiwana i rzeczywista nie są równe
    //test się nie powiedzie, odczytaj wyniki testu w konsoli
    Assert.assertEquals(expected, actual);
}
Tutaj tworzymy kilku użytkowników testowych -> tworzymy listę, expected na której umieścimy użytkowników, których metoda do nas zwróci getAllUsers()-> tworzymy listę actual , na której umieścimy użytkowników, których zakładamy, że getAllUsers()metoda Assert.assertEquals(actual, oczekiwana) zostaną wykorzystane i przekażemy mu sprawdzone i aktualne wykazy. Ta metoda przetestuje obiekty na dostarczonych listach i zwróci wynik testu. Metoda porówna wszystkie pola obiektów, nawet przechodząc przez pola rodziców, jeśli istnieje dziedziczenie. Przeprowadźmy pierwszy test... JUnit część I - 6Test zakończył się pomyślnie. Teraz spróbujmy sprawić, żeby test się nie udał, w tym celu musimy zmienić jedną z list testowych, zrobimy to poprzez skomentowanie dodania jednego użytkownika do listy actual.
@Test
public void getAllUsers() {
    // utwórz dane testowe
    User user = new User(„Eugeniusz”, 35, Sex.MALE);
    User user1 = new User("Przystań", 34, Sex.FEMALE);
    User user2 = new User("Alina", 7, Sex.FEMALE);

    //utwórz oczekiwaną listę i wypełnij ją danymi naszej metody
    List<User> expected = User.getAllUsers();

    // utwórz rzeczywistą listę, umieść na niej dane do porównania
    // czego oczekujemy od metody
    List<User> actual = new ArrayList<>();
    actual.add(user);
    actual.add(user1);
    //actual.add(user2);

    //uruchom test, jeśli lista oczekiwana i rzeczywista nie są równe
    //test się nie powiedzie, odczytaj wyniki testu w konsoli
    Assert.assertEquals(expected, actual);
}
uruchamiamy test i widzimy co następuje: JUnit część I - 7Teraz możemy trochę przyjrzeć się przyczynie niepowodzenia testu. Tutaj widzimy, że na sprawdzanej liście jest więcej użytkowników niż na aktualnej. To jest powód niepowodzenia. Czy możemy to sprawdzić w głównym? JUnit : main = 1 : 0. Zobaczmy jak będzie wyglądał test jeśli będzie zawierał zupełnie inne obiekty, zróbmy to tak:
@Test
public void getAllUsers() {
    // utwórz dane testowe
    User user = new User(„Eugeniusz”, 35, Sex.MALE);
    User user1 = new User("Przystań", 34, Sex.FEMALE);
    User user2 = new User("Alina", 7, Sex.FEMALE);

    //utwórz oczekiwaną listę i wypełnij ją danymi naszej metody
    List<User> expected = User.getAllUsers();

    // utwórz rzeczywistą listę, umieść na niej dane do porównania
    // czego oczekujemy od metody
    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));

    //uruchom test, jeśli lista oczekiwana i rzeczywista nie są równe
    //test się nie powiedzie, odczytaj wyniki testu w konsoli
    Assert.assertEquals(expected, actual);
}
Tak będzie w konsoli: JUnit część I - 8tutaj od razu widać, że na porównywanych listach znajdują się różni użytkownicy, możemy też kliknąć <Kliknij, aby zobaczyć różnicę> otrzymamy okno, w którym szczegółowo zobaczymy, jakie dane mamy problem z. IDEA podświetli wszystkie pola, w których występują różnice. JUnit część I - 9mainczy to się może zdarzyć? - NIE. JUnit : main = 2 : 0 No cóż, chodźmy dalej, mamy jeszcze sporo metod, które trzeba objąć testami), ale poczekaj, nie będzie źle sprawdzić, czy metoda do nas getAllUsers()wróci , bo to co robimy z nullzadaniami JavaRush przechwyconymi przez walidator). Zróbmy to, to kwestia trzech kopiejek...
@Test
public void getAllUsers_NO_NULL() {
    //dodaj sprawdzanie wartości null
    List<User> expected = User.getAllUsers();
    Assert.assertNotNull(expected);
}
Tak, tak, mniej więcej w ten sposób walidator przechwytuje nasz gówniany kod null;) Teraz przeprowadźmy ten test i zobaczmy, co nam pokaże. I pokaże błąd, jak???? Jak można było tu popełnić błąd testowy))) JUnit część I - 10I tutaj możemy zbierać pierwsze owoce pokrycia naszego kodu testami. Jak pamiętacie allUsers inicjowaliśmy pole w konstruktorze, co oznacza, że ​​wywołując metodę getAllUsers()będziemy odwoływać się do obiektu, który nie został jeszcze zainicjalizowany. Edytujmy to, usuńmy inicjalizację z konstruktora i zróbmy to podczas deklarowania pola.
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);
        }
    }
Przeprowadźmy test, teraz wszystko jest w porządku. JUnit część I - 11Nie sądzę, że będzie łatwo wyłapać NPE w main, myślę, że zgodzisz się, że liczba to JUnit: main = 3: 0 Następnie omówię wszystkie metody testami i zobaczę, jak to będzie wyglądać ... Teraz nasza klasa testowa wygląda następująco:
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() {
        // utwórz dane testowe
        User user = new User(„Eugeniusz”, 35, Sex.MALE);
        User user1 = new User("Przystań", 34, Sex.FEMALE);
        User user2 = new User("Alina", 7, Sex.FEMALE);

        //utwórz oczekiwaną listę i wypełnij ją danymi naszej metody
        List<User> expected = User.getAllUsers();

        // utwórz rzeczywistą listę, umieść na niej dane do porównania
        // czego oczekujemy od metody
        List<User> actual = new ArrayList<>();
        actual.add(user);
        actual.add(user1);
        actual.add(user2);

        //uruchom test, jeśli lista oczekiwana i rzeczywista nie są równe
        //test się nie powiedzie, odczytaj wyniki testu w konsoli
        Assert.assertEquals(expected, actual);
    }

    @Test
    public void getAllUsers_NO_NULL() {
        //dodaj sprawdzanie wartości null
        List<User> expected = User.getAllUsers();
        Assert.assertNotNull(expected);
    }

    @Test
    public void getAllUsers_MALE() {
        User user = new User(„Eugeniusz”, 35, Sex.MALE);
        User user1 = new User("Przystań", 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() {
        //dodaj sprawdzanie wartości null
        List<User> expected = User.getAllUsers(Sex.MALE);
        Assert.assertNotNull(expected);
    }

    @Test
    public void getAllUsers_FEMALE() {
        User user = new User(„Eugeniusz”, 35, Sex.MALE);
        User user1 = new User("Przystań", 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() {
        //dodaj sprawdzanie wartości null
        List<User> expected = User.getAllUsers(Sex.FEMALE);
        Assert.assertNotNull(expected);
    }

    @Test
    public void getHowManyUsers() {
        User user = new User(„Eugeniusz”, 35, Sex.MALE);
        User user1 = new User("Przystań", 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(„Eugeniusz”, 35, Sex.MALE);
        User user1 = new User("Przystań", 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(„Eugeniusz”, 35, Sex.MALE);
        User user1 = new User("Przystań", 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(„Eugeniusz”, 35, Sex.MALE);
        User user1 = new User("Przystań", 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(„Eugeniusz”, 35, Sex.MALE);
        User user1 = new User("Przystań", 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(„Eugeniusz”, 35, Sex.MALE);
        User user1 = new User("Przystań", 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);
    }
}
Tak, okazało się, że nie jest to małe, ale co się stanie podczas pracy z dużymi projektami. Co tu można zredukować Po ocenie wszystkiego widać, że w każdym teście tworzymy dane testowe i tu z pomocą przychodzą adnotacje. Weźmy @Before- Adnotacja @Beforewskazuje, że metoda zostanie wykonana przed każdą testowaną metodą @Test. Tak będzie teraz wyglądać nasza klasa testowa z adnotacją @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(„Eugeniusz”, 35, Sex.MALE);
        user1 = new User("Przystań", 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() {
        //dodaj sprawdzanie wartości 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() {
        //dodaj sprawdzanie wartości 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);
    }
}
No, a u Was, już jest przyjemniej i łatwiej się to czyta ;) Oto lista adnotacji dla JUnit, zdecydowanie łatwiej się z nimi żyć.
@Test – определяет что метод method() является тестовым.
@Before – указывает на то, что метод будет выполнятся перед каждым тестируемым методом @Test.
@After – указывает на то что метод будет выполнятся после каждого тестируемого метода @Test
@BeforeClass – указывает на то, что метод будет выполнятся в начале всех тестов,
а точней в момент запуска тестов(перед всеми тестами @Test).
@AfterClass – указывает на то, что метод будет выполнятся после всех тестов.
@Ignore – говорит, что метод будет проигнорирован в момент проведения тестирования.
(expected = Exception.class) – указывает на то, что в данном тестовом методе
вы преднамеренно ожидаете Exception.
(timeout = 100) – указывает, что тестируемый метод не должен занимать больше чем 100 миллисекунд.
Główne metody klasy Assertsłużące do sprawdzania:
fail(String) – указывает на то что бы тестовый метод завалился при этом выводя текстовое сообщение.
assertTrue([message], boolean condition) – проверяет, что логическое stan истинно.
assertsEquals([String message], expected, actual) – проверяет, что два значения совпадают.
Примечание: для массивов проверяются ссылки, а не содержание массивов.
assertNull([message], object) – проверяет, что obiekt является пустым null.
assertNotNull([message], object) – проверяет, что obiekt не является пустым null.
assertSame([String], expected, actual) – проверяет, что обе переменные относятся к одному obiektу.
assertNotSame([String], expected, actual) – проверяет, что обе переменные относятся к разным obiektам.
W ten sposób możemy dodać zależność JUnit 4.12 w Maven
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.12</version>
  <scope>test</scope>
</dependency>
ciąg dalszy tutaj -> JUnit część II
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION