Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Test con junit

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    23

    Test con junit

    Buonasera, volevo sapere come fare per fare un test con junit su un metodo void. Vi posto il codice del metodo da testare:
    codice:
        private void metodoUno() throws SQLException{
        	GregorianCalendar gc = new GregorianCalendar();
    		int anno = gc.get(Calendar.YEAR);
    		int mese = gc.get(Calendar.MONTH) + 1;
    		int giorno = gc.get(Calendar.DATE);
    		int ore = gc.get(Calendar.HOUR_OF_DAY);
    		int min = gc.get(Calendar.MINUTE);
            String esito = "no";
    		if(presenza.equals("no")){
            	output.println("Hai fatto procedura  "+anno+"-"+mese+"-"+giorno+". Ora:"+ore+":"+min); 
                stmt4.executeUpdate("update users set campo='si' where user='"+u+"'");
                esito="entrata effettuata";
                System.out.println(esito);
                }else{
            		output.println("Hai già effettuato procedura");
                }
        }
    Ho provato a mettere il metodo come "public String", però non riesco a eseguire il test. Preciso che "presenza" è una variabile che assume il risultato di una quei SQL. Pensavo che magari potesse essere un problema il fatto che testando solo il metodo non può collegarsi al database e quindi non riesce a verificare quel ciclo if. Sono un po in crisi, devo testare alcuni metodi però non so come procedere. Se qualcuno mi aiuta mi farebbe un favore; grazie in anticipo.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da abab Visualizza il messaggio
    Buonasera, volevo sapere come fare per fare un test con junit su un metodo void.
    Ho provato a mettere il metodo come "public String", però non riesco a eseguire il test. Preciso che "presenza" è una variabile che assume il risultato di una quei SQL. Pensavo che magari potesse essere un problema il fatto che testando solo il metodo non può collegarsi al database e quindi non riesce a verificare quel ciclo if. Sono un po in crisi, devo testare alcuni metodi però non so come procedere.
    Innanzitutto la questione è che i metodi private non li si testa direttamente. Perché essendo privati fanno parte dei "dettagli" interni di una classe. Si testa la API "pubblica" di una classe, che poi usa internamente i metodi private che vuole. E detto chiaramente, tentare di cambiare il livello di accesso da private a public ovviamente non è la soluzione in generale.

    Ma vedo altre questioni: quel metodo fa accesso ad un DB, vedo un stmt4 (Statement), vedo un executeUpdate. Durante il test con JUnit vuoi che vada veramente su DB?? Perché allora NON è più uno "unit test" ma come minimo un "integration test" .... che è un'altra cosa.
    Quindi? Cosa vuoi testare? A quale livello??

    Come è fatto il resto della classe? Come viene ottenuto lo Statement e il resto delle risorse per JDBC? Sei sicuro che la classe sia testabile in termini di puro "unit test"??

    Non ho ovviamente visione completa sulla classe/applicazione, quindi non posso certo confermare o smentire che sia unit testable. Ma è possibile che sia altamente difficile testarla come "unit test".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Aggiungo un considerazione a margine: non esistono i cicli if, in nessun linguaggio di questo mondo. I cicli (che in Java, sono for, while e do/while) sono costrutti che consentono di "ciclare", cioè di ripetere più volte un'istruzione o un blocco di istruzioni. L'istruzione if non fa nulla di tutto questo.

    Lo dico perchè ultimamente lo vedo scritto spesso e questo, secondo me, è segno di una pessima forma di insegnamento.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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 © 2024 vBulletin Solutions, Inc. All rights reserved.