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