Salve a tutti, ho implementato l'algoritmo della ricerca di Fibonacci e mi accingo per la prima volta a testare il tutto con la JUnit. Ma qualcosa non mi è chiaro.
Innanzitutto questo è l'algoritmo:
codice:public class FibonacciSearcher { //METODI //costruttore public FibonacciSearcher(String[] str)//fa la ricerca nell'array str { strings = str; fibonacci = new int[13]; fibonacci[0]= 0; fibonacci[1]= 1; for(int i=2;i<13;i++) { fibonacci[i]= fibonacci[i-2]+fibonacci[i-1]; } } //_______________________ private int lookForFibonacciIndex(int n) { // Restituisce il più piccolo // indice dell'array fibonacci // t.c. fibonacci[m] >= n int m = 0; int i = 0; boolean stop = false; while (!stop) { m = fibonacci[i++]; stop = (m >= n) || (i == fibonacci.length); } return i-1; } //_______________________________________________ public int lookFor(String key) { int position = -1; //-1 significa elem nn trovato int n = strings.length; int k = lookForFibonacciIndex(n); int base = 0; for(int i=0; i<strings.length;i++){ if(k<0) return position; //elemento non trovato //pos = min{base+fibonacci[k-1],n-1}; ?? int pos; pos = base + fibonacci[k - 1]; pos = pos >= n ? n-1 : pos; String s; s = strings[pos]; //Se s == key allora termina: l'elemento è stato trovato in posizione pos; if (s.equalsIgnoreCase(key)) return position = pos; //Se key < s allora k = k-1, base = pos e torna al punto 2. if(key.compareToIgnoreCase(s)<0) { k=k-1; } //Se key > s allora k = k-2 e torna al punto 2. if(key.compareToIgnoreCase(s)>0) { base = pos; k =k-2; } } return position; } //campi esemplare private String[] strings; private int[] fibonacci; }
Io so a grosse linee che bisogna scrivere una serie di casi e una serie di risultati aspettati. Poi so che bisogna creare un oggetto da utilizzare nel test e poi distruggerlo con TearDown(), ma qui per esempio io dovrei testare il metodo LookFor, come dovrei fare?
Poi avrei altre due domande.. i risultati aspettati che scrivo all'inizio si riferiscono a tutto il programma o ai singoli test dei metodi?
Anche il costruttore si testa?
Grazie millecodice:import junit.framework.TestCase; public class FibonacciSearcherTest extends TestCase { String[] cases = { "carta", "bello", "nuovo", "ciao", "delta", "bacio" }; String[] expected = { "OK", "KO", "KO", "KO", "OK", "OK" }; // Oggetto col quale testare la classe String[] strings; //crea gli oggetti che mi servono per il test protected void setUp() throws Exception { super.setUp(); strings = new String[4]; strings[0] = "agata"; strings[1] = "bacio"; strings[2] = "carta"; strings[3] = "delta"; } //distrugge gli oggetti creati per il test protected void tearDown() throws Exception { super.tearDown(); strings = null; } //_____________________________________________________________ public void testLookFor() { fail("Not yet implemented"); } }

Rispondi quotando