Sto provando a testare un piccolo programma che ho scritto.
Il mio problema è che non riesco a vedere un modo semplice per testare la mia classe di livello superiore (Matcher) che espone un singolo metodo pubblico (MatchAll).
Ho prove per le mie classi interne, ma sono in gran parte banali.
Permettetemi di presentare un problema e uno schizzo della mia soluzione:
Problema: una lista di persone, un elenco delle loro squadre preferite e classifiche per ogni squadra, trova una corrispondenza che massimizzi sia il rango di squadra che tiene conto delle preferenze dei candidati.
La mia soluzione:
- Candidato: contiene un elenco di squadre preferite e un punteggio di classifica per ogni rispettivo team
- Squadra - contiene un elenco di candidati accettati. Finché la squadra ha spazio, accetta qualsiasi candidato. Una volta che si riempie, accetta solo candidati che migliorano il suo punteggio. Elimina inoltre il candidato con il punteggio più basso.
Il team espone i seguenti metodi:
- IsBetterMatch
- Aggiungi
- PurgeWeakest
Corrispondente: contiene l'elenco di candidati e l'elenco di squadre e implementa la logica fondamentale dell'assegnazione di candidati a una squadra.
La mia logica di corrispondenza è la seguente (Pseudocodice):
function Matchall()
while candidates != empty
c <- candidates.getFirst()
for each t in c.teams
betterMatch = t.IsBetterMatch(c)
if betterMatch
weakest = t.purgeWeakest()
t.Add(c)
candidates.add(weakest)
Supponendo che i metodi del team siano stati accuratamente testati, come suggeriresti di testare questa funzione?
I test a cui posso pensare per questa funzione sono molto complessi sia per formulare che per impostare.
Ad esempio:
Quando due candidati hanno lo stesso grado e vogliono la stessa squadra e la squadra ha spazio solo per uno, il primo deve essere assegnato alla squadra. La seconda dovrebbe essere assegnata a un'altra squadra nella sua lista delle preferenze.
Mi sembra che rientrino maggiormente nella categoria dei test di integrazione, motivo per cui sono confuso. Ho capito che i test unitari dovrebbero essere brevi e semplici da scrivere