Commit 864e44ff by Patryk Czarnik

Pierwsze testy JUnit

parent 150e39cb
......@@ -21,7 +21,12 @@
<version>42.7.4</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.11.3</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
\ No newline at end of file
......@@ -53,7 +53,7 @@ public class Konto {
throw new IllegalArgumentException("Kwota wypłaty nie jest dodatnia");
}
if(kwota > saldo) {
throw new BrakSrodkow("Za mało środków na koncie nr " + numer);
throw new BrakSrodkow("Brak środków na koncie nr " + numer);
}
saldo -= kwota;
}
......
package p06_enkapsulacja;
import org.junit.jupiter.api.*;
import java.time.LocalDate;
import static org.junit.jupiter.api.Assertions.*;
class KontoTest {
private Konto konto;
private Osoba osoba;
@BeforeAll
static void beforeAll() {
System.out.println("Before all");
}
@AfterAll
static void afterAll() {
System.out.println("After all");
}
@BeforeEach
void setUp() {
System.out.println("KontoTest setUp");
// Jeśli jakiś obiekt jest potrzebny we wszystkich testach (albo zdecydowanej większości)
// to deklarujemy go na poziomie klasy, a inicjalizujemy w metodzie setUp
osoba = new Osoba("Ala", "Kowalska", LocalDate.of(2000, 2, 3));
konto = new Konto(1234, osoba, 1000);
}
@AfterEach
void tearDown() {
System.out.println("KontoTest tearDown");
}
@Test
void testToString() {
assertEquals("Konto nr 1234, wł: Ala Kowalska ur.2000-02-03, saldo: 1000", konto.toString());
}
@Test
void wplata() {
konto.wplata(200);
assertEquals(1200, konto.getSaldo());
}
@Test
void wplataUjemna() {
assertThrows(IllegalArgumentException.class, () -> konto.wplata(-200));
// sprawdzamy, czy wywołanie wplata doprowadziło do wyjątku,
// ale także czy po zakończeniu stan konta nie uległ zmianie
assertEquals(1000, konto.getSaldo());
}
@Test
void wyplata() throws BrakSrodkow {
konto.wyplata(300);
assertEquals(700, konto.getSaldo());
}
@Test
void wyplataUjemna() {
assertThrows(IllegalArgumentException.class, () -> konto.wyplata(-200));
assertEquals(1000, konto.getSaldo());
}
@Test
void wyplataBrakSrodkow() {
BrakSrodkow wyjatek = assertThrows(BrakSrodkow.class, () -> konto.wyplata(1500));
assertEquals("Brak środków na koncie nr 1234", wyjatek.getMessage());
assertEquals(1000, konto.getSaldo());
}
@Test
void przelew() throws BrakSrodkow {
// Jeśli jakiegoś obiektu potrzebujemy tylko w jednym teście (lub w małej części testów, które są w klasie)
// to taki obiekt tworzymy już bezpośrednio w metodzie.
Konto inneKonto = new Konto(2222, osoba, 2000);
konto.przelew(inneKonto, 400);
assertEquals(600, konto.getSaldo());
assertEquals(2400, inneKonto.getSaldo());
}
}
\ No newline at end of file
package p07_funkcje;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class TestyFunkcji {
@Test
void testSilnia5() {
// wykonuję operację, którą chcę sprawdzić
int wynik = Silnia.silnia(5);
// sprawdzam, czy wynik i inne "efekty" są zgodne z oczekiwaniami
// dokonuję tego za pomocą asercji...
// język Java zawiera instrukcję assert
// Ta wbudowana instrukcja assert zostanie uwzględniona (sprawdzona) tylko,
// jeśli Java została uruchomiona z opcją -ea
// Standardowo - tę opcję włącza się podczas testowania, a wyłącza "na produkcji".
// assert wynik == 120;
// assert wynik == 120 : ("Silnia nie działa, bo zamiast 120 zwróciła " + wynik);
// Asercja działa tak:
// - jeśli warunek jest prawdziwy, to nic się nie dzieje i program idzie dalej
// - jeśli warunek nie jest spełniony, to w tym momencie wyrzucany jest wyjątek AssertionError
// Dałoby się to zapisać tak:
// if(! (wynik == 120)) {
// throw new AssertionError();
// }
assertEquals(120, wynik);
// assertEquals(120, wynik, "Własny komunikat");
}
@Test
void testSilnia0() {
assertEquals(1, Silnia.silnia(0));
}
@Test
void testFib0() {
assertEquals(0, Fibonacci.fib(0));
}
@Test
void testFib1() {
assertEquals(1, Fibonacci.fib(1));
}
@Test
void testFib11() {
assertEquals(89, Fibonacci.fib(11));
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment