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?

codice:
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");
	}

}
Grazie mille