Ciao a tutti,
appena registrata al forum, anche se in passato vi ho letto tantissimo in altre sezioni (html),
mi presento, sono Rosalba, 17 anni da Frosinone,
ho iniziato un corso Java e sono subito qui a chiedervi aiuto,
ho davanti a me il primo Homework assegnatomi.
Ho un sorgente da importare in Eclipse
alla quale devo fare quanto segue
Esercizio 1 (Testing)
• Scrivere le classi di test JUnit per le classi
Stanza, Partita
• Scrivere almeno tre metodi di test per ciascuno
dei metodi più importanti di queste classi
• Perseguire la qualità dei test, in particolare la
loro minimalità.
Allo scopo scrivere test-case
brevi e coincisi: che utilizzino meno oggetti possibile ed in uno stato iniziale più semplice possibile
fattorizzati: senza codice duplicato ma evitando di
comprometterne leggibilità ed autocontenimento
indipendenti: che evitino di ripetere scenari di test già
coperti da altri test-case
Qui ho il src Stanza.java
codice:public class Stanza { private static final int NUMERO_MASSIMO_DIREZIONI = 4; private static final int NUMERO_MASSIMO_ATTREZZI = 10; private String nome; private Attrezzo[] attrezzi; private int numeroAttrezzi; private Stanza[] stanzeAdiacenti; private int numeroStanzeAdiacenti; private String[] direzioni; /** * Crea una stanza. Non ci sono stanze adiacenti, non ci sono attrezzi. * @param nome il nome della stanza */ public Stanza(String nome) { this.nome = nome; this.numeroStanzeAdiacenti = 0; this.numeroAttrezzi = 0; this.direzioni = new String[NUMERO_MASSIMO_DIREZIONI]; this.stanzeAdiacenti = new Stanza[NUMERO_MASSIMO_DIREZIONI]; this.attrezzi = new Attrezzo[NUMERO_MASSIMO_ATTREZZI]; } /** * Imposta una stanza adiacente. * * @param direzione direzione in cui sara' posta la stanza adiacente. * @param stanza stanza adiacente nella direzione indicata dal primo parametro. */ public void impostaStanzaAdiacente(String direzione, Stanza stanza) { boolean aggiornato = false; for(int i=0; i<this.direzioni.length; i++) if (direzione.equals(this.direzioni[i])) { this.stanzeAdiacenti[i] = stanza; aggiornato = true; } if (!aggiornato) if (this.numeroStanzeAdiacenti < NUMERO_MASSIMO_DIREZIONI) { this.direzioni[numeroStanzeAdiacenti] = direzione; this.stanzeAdiacenti[numeroStanzeAdiacenti] = stanza; this.numeroStanzeAdiacenti++; } } /** * Restituisce la stanza adiacente nella direzione specificata * @param direzione */ public Stanza getStanzaAdiacente(String direzione) { Stanza stanza = null; for(int i=0; i<this.numeroStanzeAdiacenti; i++) if (this.direzioni[i].equals(direzione)) stanza = this.stanzeAdiacenti[i]; return stanza; } /** * Restituisce la nome della stanza. * @return il nome della stanza */ public String getNome() { return this.nome; } /** * Restituisce la descrizione della stanza. * @return la descrizione della stanza */ public String getDescrizione() { return this.toString(); } /** * Restituisce la collezione di attrezzi presenti nella stanza. * @return la collezione di attrezzi nella stanza. */ public Attrezzo[] getAttrezzi() { return this.attrezzi; } /** * Mette un attrezzo nella stanza. * @param attrezzo l'attrezzo da mettere nella stanza. * @return true se riesce ad aggiungere l'attrezzo, false atrimenti. */ public boolean addAttrezzo(Attrezzo attrezzo) { if (this.numeroAttrezzi < NUMERO_MASSIMO_ATTREZZI) { this.attrezzi[numeroAttrezzi] = attrezzo; this.numeroAttrezzi++; return true; } else { return false; } } /** * Restituisce una rappresentazione stringa di questa stanza, * stampadone la descrizione, le uscite e gli eventuali attrezzi contenuti * @return la rappresentazione stringa */ public String toString() { String s = new String(); s += this.nome; s += "\nUscite: "; for (String direzione : this.direzioni) if (direzione!=null) s += " " + direzione; s += "\nAttrezzi nella stanza: "; for (Attrezzo attrezzo : this.attrezzi) { s += attrezzo.toString()+" "; } return s; } /** * Controlla se un attrezzo esiste nella stanza (uguaglianza sul nome). * @return true se l'attrezzo esiste nella stanza, false altrimenti. */ public boolean hasAttrezzo(String nomeAttrezzo) { boolean trovato; trovato = false; for (Attrezzo attrezzo : this.attrezzi) { if (attrezzo.getNome().equals(nomeAttrezzo)) trovato = true; } return trovato; } /** * Restituisce l'attrezzo nomeAttrezzo se presente nella stanza. * @param nomeAttrezzo * @return l'attrezzo presente nella stanza. * null se l'attrezzo non e' presente. */ public Attrezzo getAttrezzo(String nomeAttrezzo) { Attrezzo attrezzoCercato; attrezzoCercato = null; for (Attrezzo attrezzo : this.attrezzi) { if (attrezzo.getNome().equals(nomeAttrezzo)) attrezzoCercato = attrezzo; } return attrezzoCercato; } /** * Rimuove un attrezzo dalla stanza (ricerca in base al nome). * @param nomeAttrezzo * @return true se l'attrezzo e' stato rimosso, false altrimenti */ public boolean removeAttrezzo(Attrezzo attrezzo) { // da implementare return false; } public String[] getDirezioni() { String[] direzioni = new String[this.numeroStanzeAdiacenti]; for(int i=0; i<this.numeroStanzeAdiacenti; i++) direzioni[i] = this.direzioni[i]; return direzioni; } }
mentre qui
Partita.java
codice:public class Partita { private Stanza stanzaCorrente; private Stanza stanzaVincente; private boolean finita; private int cfu; private static int CFU_INIZIALI = 20; public Partita(){ creaStanze(); this.finita = false; this.cfu = CFU_INIZIALI; } /** * Crea tutte le stanze e le porte di collegamento */ private void creaStanze() { /* crea gli attrezzi */ Attrezzo lanterna = new Attrezzo("lanterna",3); Attrezzo osso = new Attrezzo("osso",1); /* crea stanze del labirinto */ Stanza atrio = new Stanza("Atrio"); Stanza aulaN11 = new Stanza("Aula N11"); Stanza aulaN10 = new Stanza("Aula N10"); Stanza laboratorio = new Stanza("Laboratorio Campus"); Stanza biblioteca = new Stanza("Biblioteca"); /* collega le stanze */ atrio.impostaStanzaAdiacente("nord", biblioteca); atrio.impostaStanzaAdiacente("est", aulaN11); atrio.impostaStanzaAdiacente("sud", aulaN10); atrio.impostaStanzaAdiacente("ovest", laboratorio); aulaN11.impostaStanzaAdiacente("est", laboratorio); aulaN11.impostaStanzaAdiacente("ovest", atrio); aulaN10.impostaStanzaAdiacente("nord", atrio); aulaN10.impostaStanzaAdiacente("est", aulaN11); aulaN10.impostaStanzaAdiacente("ovest", laboratorio); laboratorio.impostaStanzaAdiacente("est", atrio); laboratorio.impostaStanzaAdiacente("ovest", aulaN11); biblioteca.impostaStanzaAdiacente("sud", atrio); /* pone gli attrezzi nelle stanze */ aulaN10.addAttrezzo(lanterna); atrio.addAttrezzo(osso); // il gioco comincia nell'atrio stanzaCorrente = atrio; stanzaVincente = biblioteca; } public Stanza getStanzaVincente() { return stanzaVincente; } public void setStanzaCorrente(Stanza stanzaCorrente) { this.stanzaCorrente = stanzaCorrente; } public Stanza getStanzaCorrente() { return this.stanzaCorrente; } /** * Restituisce vero se e solo se la partita e' stata vinta * @return vero se partita vinta */ public boolean vinta() { return this.getStanzaCorrente()== this.getStanzaVincente(); } /** * Restituisce vero se e solo se la partita e' finita * @return vero se partita finita */ public boolean isFinita() { return finita || vinta() || (cfu == 0); } /** * Imposta la partita come finita * */ public void setFinita() { this.finita = true; } public int getCfu() { return this.cfu; } public void setCfu(int cfu) { this.cfu = cfu; } }
Non voglio la pappa pronta!!!! ( ho letto il regolamento)
Sono qui per chiedervi un enorme mano, per me al momento è tutto arabo.
Se qualcuno cosi gentile riesce a spiegarmi meglio cosa devo fare, mi farebbe un enorme piacere.
Il Top sarebbe un - ESEMPIO - di test su una classe,
cosi dall'esempio riesco a capire sicuramente meglio il tutto e farlo anche sulle altre classi.
Sò di chiedere tanto.
Eventualmente,
Grazie.
Rosalba

)
Rispondi quotando