Visualizzazione dei risultati da 1 a 7 su 7

Discussione: JUnit

  1. #1

    JUnit

    Buona sera a tutti,
    non so se quello che devi chiedere è postato nel posto giusto comunque chiedo.


    Bene, ho un problema forse sono io che non capisco o mi complico la vita boh. Comunque vorrei che qualcuno MI SPIEGASSE cosa fa un TEST JUNIT4 perchè oggi dopo che ho portato 3 codici perfettamente funzionanti al mio superiore in tre volte diverse perchè mi ha rischiesto modifiche diverse ogni volta mi ha detto che non andavano bene, che lo scopo del test è di testare un qualche cosa ma che non deve ritornare niente...

    Io ora da profana mi chiedo se ad esempio devo testare una cancellazione questa deve controllare se l'elemento esiste e nel caso esistesse lo cancella (quindi mi cancella i dati dal database e finisce lì) , ma se l'elemento non esiste non deve fare niente? non deve ritornare un qualche cosa che dice: " il valore non c'è" o altro?
    e lui mi ha detto no! e io non capisco cosa vuol dire questo NO! perchè se non trovo l'elemento che deve fare il programma?

    questo è il problema che non capisco a che serve fare il test non funzionate se non deve ritornarmi niente quindi vi chiedo se potete spiegarmi in generale cosa serve la JUnit4 o se potete dirmi qualche sito preciso perchè ho visto su google una 50 di guide ma evidentemente erano tutte sbagliate o semplicemente so io che non ci capisco niente.

    Non voglio codici voglio solo capire a che serve fare due tipi di test uno funzionante e uno non funzionante e nel caso del secondo, che cosa dovrebbe ritornare se non trova un qualsiasi oggetto?

    Grazie e scusate il mio post scritto in modo così lungo.

  2. #2
    Strana domanda.

    Forse il tuo superiore vuole che gestisca gli errori con le eccezioni. JUnit le cattura e le stampa. E' questo il metodo per gestire gli errori, e se il tuo programma in generale deve solo controllare se "ci sono errori", basta lanciare delle eccezioni e si capisce se ci sono errori senza ritornare nulla dalla funzione.
    lolide
    Java Programmer

    Informati

  3. #3
    so che è una domanda strana ma dopo giorni di lavoro vedere che non va bene niente mi son sentita un pò sciocca e ho pensato di chiedere ... no lui non vuole che stampi le eccezioni per lui se escono le eccezioni vuol dire che è fatto male quindi non le vuole nemmeno gestite ma questo è assurdo ... alla fine io se faccio un controllo e faccio ritornare la scritta "elemento inesistente" quando non trova alcun dato dice che non va bene che non si fanno così i test. Quindi vorrei capire a questo punto cosa sono se non deve tornare nulla? come fa a dire funziona? mah proprio non so mi ha mandato in una tale confusione che veramente non so cosa pensare più.

  4. #4
    Ci sarebbero delle funzioni invece che controllano la validita' di una condizione, di una variabile ecc...

    sono i metodi statici contenuti nella classe Assert

    Leggi qui per un esempio e qui trovi la reference della classe Assert
    lolide
    Java Programmer

    Informati

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    I test sono fatti per "certificare", "asserire" in modo automatico che il tuo programma si comporta bene ed eventuali eccezioni non andrebbero catchate proprio perché sintomo di un errore a cui magari non hai pensato e/o non gestito.

    Se tu devi testare l'operazione di inserimento di un record in un database, devi:

    1. predisporre il database
    2. inserire il tuo record
    3. controllare che il record esista
    es. richiedi la chiave primaria del record appena inserito, se valida allora è andata bene. questo lo controlli con ad esempio
    codice:
    assertTrue(primaryKey != null)
    oppure

    codice:
    assertTrue(primaryKey > 0)
    fai te sul tipo della chiave

    se quell'assert è superato, hai inserito correttamente, altrimenti fail e in genere fai

    codice:
    fail("Inserimento non corretto")

    Ci sono dei casi in cui di proposito fai fallire la tua operazione (per vedere come si comporta il programma): in tal caso se ad esempio provi a dare dei valori non ammessi, avrai una eccezione: fai il catch di quell'eccezione, con quella root case e quel messaggio e ti va ancora bene perché vuoi generare quella eccezione.

    Se vuoi testare la cancellazione, puoi cancellare un record che non esiste? cosa fa il tuo programma se il record non esiste? Il tuo test deve verificare che il tuo programma si comporti bene

    Non so se sono riuscita a spiegarmi
    RTFM Read That F*** Manual!!!

  6. #6
    Grazie per il vostro aiuto e le vostre spiegazioni molto utili

    @lolide grazie per i link soprattutto per il primo che sto studiando adesso.

    @valia volevo chiederti quando hai scritto l'esempio

    codice:
    Se vuoi testare la cancellazione, puoi cancellare un record che non esiste? cosa fa il tuo programma se il record non esiste? Il tuo test deve verificare che il tuo programma si comporti bene
    che vuol dire devi verificare che il tuo programma si comporti bene? deve gestire l'eccezione o cosa?

    riguardo all'uso del catch mi è stato chiesto di non usarlo perchè in un test secondo il mio superiore non ci vuole.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    non ci siamo capiti, lascia stare il test per un secondo: cosa fa il tuo programma se non trova il record?
    Un messaggio, un'eccezione che in questo caso devi catchare, ma è prevista perché come fai a dire "guarda che mi hai dato il riferimento ad un record che non esiste?"


    Il test deve sempre e comunque testare il comportamento del programma anche in questi casi, deve rispondere come tu hai voluto.
    Non hai capito cosa vuole dire il tuo prof: non devi catchare tutte le eccezioni indistintamente, se la tua funzione ad un certo punto ne lancia una tu devi verificare che nelle condizioni che hai pensato lanci quella eccezione e come fai se non la catchi?

    Pensa se cerchi un file di configurazione, se tutto va bene il tuo programma parte, se non trovi il file sicuramente avrai una FileNotFoundException, che magari ti porti fuori con un messaggio più significativo per te (Io lo farei) e a quel punto quella nuova eccezione la devo catchare perché è l'obiettivo del test.
    Soprattutto devo avere una FileNotFoundException e non una IllegalArgumentException, la prima è prevista, la catturo, la seconda no e la lascio andare (quindi la gestirà qualcun altro)
    Ascolta bene il prof e quello che vuole dire
    RTFM Read That F*** Manual!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.