Io-11-lab

From Studia Informatyczne

Spis treści

Ćwiczenia – Automatyzacja wykonania testów – JUnit

Informacje wstępne

Przedstawione zadania dotyczyć będą wykorzystania biblioteki JUnit 3.8.x do automatyzacji testów. Więcej informacji o bibliotece JUnit można znaleźć na stronie http://www.junit.org/. Fragmenty programów prezentowane są w języku Java. Na stronie http://java.sun.com/ znajdują się dodatkowe informacje dotyczące platformy i języka Java.


Zadanie 1

Napisać przypadek testowy sprawdzający czy suma dwóch liczb 2,5 oraz 3,5 daje w wyniku 6.

Odpowiedzi do zadania 1


Zadanie 2.

Napisać przypadki testowe dla poniższej klasy implementującej ciąg geometryczny:

 package elearning;
 
 import java.io.*;
 import java.util.*;
 
 public class CiagGeometryczny {
     private List dane = new ArrayList();
     private double q;
 
     public void ladujDane(Reader wejscie) throws IOException, NumberFormatException {
         dane.clear();
         final BufferedReader in=new BufferedReader(wejscie);
         for (String linia = in.readLine(); linia != null; linia = in.readLine()) {
             for (StringTokenizer tokeny = new StringTokenizer(linia, ","); tokeny.hasMoreTokens(); ) {
                 dane.add(new Double(tokeny.nextToken().trim()));
             }
         }
         in.close();
     }
 
     protected List podajDane() {
         return Collections.unmodifiableList(dane);
     }
 
     public double obliczQ(double delta) {
         final List qs = new ArrayList();
         for (int i = 0; i < dane.size() - 1; i++) {
             qs.add(new Double(((Double) dane.get(i)).doubleValue() / ((Double) dane.get(i + 1))).doubleValue());
         }
 
         final double min = ((Double) Collections.min(qs)).doubleValue();
         final double max = ((Double) Collections.max(qs)).doubleValue();
         if (max - min <= delta) {
             return (max + min) / 2.0;
         }
 
         throw new IllegalStateException("To nie jest ciag geometryczny.");
     }
 }

Listing 1. Kod klasy implementującej ciąg geometryczny.

Klasa CiagGeometryczny pobiera ciag liczb ze strumienia wejściowego (np. z pliku) i wylicza na ich podstawie współczynnik q jeśli podany ciąg jest ciągiem geometrycznym. Dane oddzielone są znakiem przecinka, część ułamkowa liczby oddzielona jest znakiem kropki. Klasa CiagGeometryczny składa się z trzech metod: ladujDane, podajDane, oraz obliczQ. Pierwsza z metod – ladujDane jest odpowiedzialna za załadowanie danych ze strumienia wejściowego podanego jako argument wywołania programu. W przypadku błędu odczytu danych generowany jest wyjątek IOException. Jeśli dane podane w strumieniu mają nieprawidłowy format wówczas wygenerowany zostanie wyjątek NumberFormatException. Na załadowanych danych można przeprowadzić następnie obliczenie współczynnika q wywołując metodę obliczQ. Jako argument należy podać liczbę zmiennoprzecinkową określającą dokładność przeprowadzonych obliczeń. Jako metodę pomocniczą ułatwiającą testowanie wprowadzono metodę podajDane, która podaje jakie dane zostały załadowane ze strumienia.


Odpowiedzi do zadania 2


Zadanie 3.

Przygotowane w zadaniu 1 oraz zadaniu 2 przypadki testowe zebrać do zbioru (TestSuite) przypadków testowych wykorzystując metodę statyczną oraz metodę dynamiczną.


Odpowiedzi do zadania 3