Test Falliti

di il
2 risposte

Test Falliti

Buongiorno,

i test in questione sono eseguiti su IDE Eclipse (v. Mars Release (4.5.0) pacchetto sdk) e sono JUnit4.

Mi viene richiesto di scrivere "Un metodo che non restituisce nessun valore, ?aggiungiPaziente,? che dato un Paziente
lo aggiunge alla lista ?persone? solo se non esiste già nella lista un Paziente con idcartellaclinica maggiore di quello del paziente passato; altrimenti, il metodo deve sollevare un’eccezione esattamente di tipo ?RuntimeException?, col seguente messaggio Paziente non valido?."

Ciò che non mi torna è che mi diano fallimenti riguardo a questo codice:

Metodo inserito nella classe Ospedale:

public void aggiungiPaziente(Paziente p) {
		for (Persona persona : persone) {
			if (persona instanceof Paziente)
				if ((p.getidcartellaclinica() < ((Paziente) persona).getidcartellaclinica()))
					throw new RuntimeException("Paziente non valido");
		}
		persone.add(p);
	}
Classe Paziente (Persona è una classe astratta con variabile d'istanza nome e costruttore per inizializzarla):

public class Paziente extends Persona {
	private final int idcartellaclinica;

	public Paziente(String nome, int id) {
		super(nome);
		idcartellaclinica = id;
	}

	public int getidcartellaclinica() {
		return idcartellaclinica;
	}

	@Override
	public String toString() {
		return "Paziente[nome=" + getNome() + "][idcartellaclinica=" + getidcartellaclinica() + "]";
	}

}
I fallimenti sono questi:

2 Risposte

  • Re: Test Falliti

    ^Matteo^ ha scritto:


    lo aggiunge alla lista ?persone? solo se non esiste già nella lista un Paziente con idcartellaclinica maggiore di quello del paziente passato; altrimenti, il metodo deve sollevare un’eccezione esattamente di tipo ?RuntimeException?, col seguente messaggio Paziente non valido?."
    
    public void aggiungiPaziente(Paziente p) {
    		for (Persona persona : persone) {
    			if (persona instanceof Paziente)
    				if ((p.getidcartellaclinica() < ((Paziente) persona).getidcartellaclinica()))
    					throw new RuntimeException("Paziente non valido");
    		}
    		persone.add(p);
    	}
    
    E questo è corretto/sensato, perlomeno per la descrizione fatta sopra.

    Sarebbe stato però un pochino più sensato se fosse stato "maggiore/uguale di quello del paziente passato" (gli id dovrebbero essere unici, no?).

    ^Matteo^ ha scritto:


    Classe Paziente (Persona è una classe astratta con variabile d'istanza nome e costruttore per inizializzarla):
    Ok, sensato: un paziente è-una persona.

    Ma giusto per capire: in Ospedale hai messo una collezione <Persona> ? E perché non <Paziente> ? Hai altre sotto-classi di Persona?

    ^Matteo^ ha scritto:


    I fallimenti sono questi:
    Ma come facciamo a capire il perché senza vedere come sono fatti i test??
  • Re: Test Falliti

    Dopo un mese e più sono riuscito ad avere delle spiegazioni dal Professore ed avevo sbagliato un costruttore.
    Il restante codice era perfetto.
Devi accedere o registrarti per scrivere nel forum
2 risposte