Junit e passaggio array

di il
3 risposte

Junit e passaggio array

Buongiorno,
ho posto una domanda su stack ma finora non è che abbia ricevuto una gran risposta...

https://stackoverflow.com/questions/48790135/parameterizing-with-array-in-junit-5

Per sintetizzare: cerco un modo "easy" di passare i vettori a un metodo di test parametrizzato in JUnit5 (o anche altra libreria!!). Qualcosa tipo:

@ValueSource(doublesArray = {new double[]{1.0, 2.0, 3.0}})
Che però dà errore.

3 Risposte

  • Re: Junit e passaggio array

    Lorenzo3 ha scritto:


    Per sintetizzare: cerco un modo "easy" di passare i vettori a un metodo di test parametrizzato in JUnit5 (o anche altra libreria!!). Qualcosa tipo:
    
    @ValueSource(doublesArray = {new double[]{1.0, 2.0, 3.0}})
    
    Ti parlo innanzitutto di JUnit 4 (il 5 non ho ancora avuto modo di vederlo/usarlo appropriatamente ma credo valga lo stesso su quanto dirò).
    Con JUnit 4 è abbastanza facile fare dei test "parametrizzati". Basta che guardi ad esempio la documentazione ufficiale:

    Parameterized tests

    Nota che JUnit (perlomeno 4.x) non ha una @ValueSource, come leggi al link sopra la parametrizzazione si dichiara in ben altro modo!

    Il punto/problema di JUnit 4 è che i test parametrizzati sono alquanto limitati. Perché hai un solo blocco di N parametri e questi si applicheranno a tutti i test in quella classe. Non puoi avere nella stessa classe ad esempio i parametri X e Y per un metodo di test e il parametro Z per un altro metodo di test.
    Se hai bisogno di fare cose più particolari con le parametrizzazioni, c'è TestNG, la libreria di unit-test che è il "concorrente" di JUnit sebbene sia meno nota/usata.

    P.S. per curiosità, vado a vedere in JUnit 5 se hanno migliorato la questione dei test parametrizzati.

    EDIT: visto subito adesso, in JUnit 5 sì, hanno migliorato le cose sui test parametrizzati. E vedo che ha una annotazione @ValueSource.
    La documentazione la trovi qui: 3.13. Parameterized Tests

    P.S.2 la documentazione di JUnit 5 dice che questi nuovi test parametrizzati sono una experimental feature.
  • Re: Junit e passaggio array

    Ciao andbin,
    grazie per la tua risposta.

    Conosco junit4, che utilizzavo a dire il vero fino a non molto tempo fa. E concordo con la tua osservazione (ho sempre supplito in passato con JUnitparams...).
    Proverò comunque a dare un'occhiata, o meglio una rispolverata... ma non credo contenga quello che cerco.
    Molto interessante invece la libreria "concorrente" che mi studierò volentieri.
  • Re: Junit e passaggio array

    Lorenzo3 ha scritto:


    E concordo con la tua osservazione (ho sempre supplito in passato con JUnitparams...).
    Sì vero, esiste anche JUnitParams che sopperisce un po' ai limiti dei test parametrizzati intrinseci di JUnit 4.
Devi accedere o registrarti per scrivere nel forum
3 risposte