Napisz implementację klasy zawierającej implementację następujących metod oraz wykonaj dla niej odpowiednie testy jednostkowe:
---------------------------------------------------------
package stos;
import java.util.EmptyStackException;
public interface StackExercise
{
public String pop() throws EmptyStackException;
public void push(String item) throws Exception;
public String top() throws EmptyStackException;
public boolean isEmpty();
}
2) Kod klasy testowanej:
package stos;
import java.util.EmptyStackException;
public class klasa_stos implements StackExercise {
public String stos[];
public String temp[];
public int top;
public int rozmiar;
@Override
public boolean isEmpty()
{
if(top==0)
return true;
return false;
}
public klasa_stos(int rozmiar)
{
this.rozmiar=rozmiar;
stos = new String[this.rozmiar];
temp = new String[2];
}
@Override
public String pop() throws EmptyStackException
{
if(top==0)
{
throw new EmptyStackException();
}
else
{
top--;
temp[0]=stos[top];
stos[top]=" ";
return temp[0];
}
}
@Override
public void push(String item) throws Exception
{
if(top==stos.length)
{
throw new Exception("Przekroczyles rozmiar stosu");
}
else
{
stos[top]=item;
top++;
}
}
@Override
public String top() throws EmptyStackException
{
if(top==0)
{
throw new EmptyStackException();
}
else
{
top--;
return stos[top];
}
}
}
----------------------------------------------------------------------
package stos;
import static org.junit.Assert.*;
import java.util.EmptyStackException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class klasa_stosTest
{
klasa_stos testowany;
klasa_stos testowany_pusty;
@Before
public void setUp() throws Exception
{
testowany = new klasa_stos(4);
testowany.push("aaa");
testowany.push("bbb");
testowany.push("ccc");
testowany_pusty = new klasa_stos(4);
}
@After
public void tearDown() throws Exception
{ }
@Test
public void testIsEmpty() throws Exception
{
assertFalse(testowany.isEmpty());
assertTrue(testowany_pusty.isEmpty());
}
@Test
public void testKlasa_stos()
{
assertNotNull(testowany);
}
@Test
public void testPop() throws Exception
{
assertEquals(null,"ccc", testowany.pop());
assertEquals(null," ",testowany.stos[testowany.top]);
try
{
assertEquals(null,"ccc", testowany_pusty.pop());
fail("ZLE");
}
catch (Exception e)
{
System.err.println("Wyjatki sa obslugiwane w metodzie pop") ;
}
}
@Test
public void testPush() throws Exception
{
testowany.push("ddd");
assertEquals("","ddd",testowany.stos[--testowany.top] );
try
{
testowany.push("ggg");
assertEquals("ggg",testowany.stos[testowany.top],"" );
}
catch(Exception e)
{
System.err.println("Wyjatki sa obslugiwane w metodzie push");
}
}
@Test
public void testTop() throws EmptyStackException
{
assertEquals("","ccc", testowany.top());
try
{
assertEquals("","ccc", testowany_pusty.top() );
fail("ZLE zle zle");
}
catch (EmptyStackException ee)
{
System.err.println("Wyjatki sa obslugiwane w metodzie Top") ;
}
}
}
------------------------------------------------------------------------
Wnioski:
Pierwszym problemem jaki napotkałem podczas wykonywania tego zadania było znalezienie informacji czym różni się INTERFACE od CLASS, następnie zaimplementowałem class stos dziedziczącą z interface, główne błędy wynikały z innego formatu metody assertEquals dla wartości STRING. Mianowicie należy podać (wg junit.org) assertEquals("info", "oczekiwana", "aktualna"). Kolejnym problemem było usuwanie ze stosu wraz ze zwracaniem return. Rozwiązane zostało to za pomocą dodatkowej tabeli temp. Wszystkie metody przeszły testy pomyślnie, wszystkie wyjątki zostały obsłużone. Dla celów testowania wszystkie wartości klasy (zmienne) zostały upublicznione.
Wyszukiwarka
Podobne podstrony:
Zad bank interface stos testyZad kontobankowe testydesign user interface?ABE09Finformatyka w prawnicza testyHistoria państwa i prawa Polski Testy TabliceZałącznik nr 18 zad z pisow wyraz ó i u poziom IzadPS4 ZB4 501 UM3 UM4 Interface Converter h1371gzad 12009 rozw zadwięcej podobnych podstron