Test delle unità di metodi "workflow"

7

Al momento stiamo sviluppando un'API pubblica per la nostra app. I metodi su questa API pubblica stanno principalmente mettendo insieme funzionalità in diversi angoli del sistema. Un esempio potrebbe essere: (i nomi sono stati modificati per proteggere gli innocenti)

public String createAppUser(String app, String name, String email, byte[] pwd) { 
     Application appl = applicationModule.retrieve(app);
     User user = userModule.createUser(name,email);
     Digest digest = cryptoModule.createDigest(pwd);
     authenticationModule.authorize(user,appl,digest);
     accountingModule.createAccount(user,appl);
     return user.getId();
}

Quando l'unità prova una cosa del genere, il test unitario è solo una copia dello stesso flusso di lavoro, con qualche rumore aggiuntivo per configurare mock, oggetti e convalidare le interazioni. Anche se trovo essenziale il test unitario delle parti algoritmiche dell'applicazione, in questa parte del "flusso di lavoro" trovo il test unitario una ripetizione del flusso di lavoro in forma di domanda. Seguendo il principio ASCIUTTO, sembra una perdita di tempo. Quali sono le migliori pratiche in questi casi?

Dato che questi metodi fanno parte di un'API pubblica, troverei più utile testarli attraverso un client e verificare che gli effetti del sistema si siano verificati. Questo è più "test di sistema" o "test di integrazione" e oltre lo scopo del test unitario.

Quale sarebbe il miglior approccio di prova in questo contesto?

    
posta maasg 13.10.2011 - 16:06
fonte

1 risposta

7

Hai ragione: questo rientra nella categoria "test di integrazione". E con i test di integrazione, tendo a non prendere in giro nulla di diverso dalle risorse esterne (come una pagina web o un file di rete), dal momento che dovresti testare come i componenti reali interagiscono tra loro.

In questi casi, basta affermare che gli stati dell'applicazione corretti sono stati modificati e che l'output sembra corretto. In questo caso, esegui il metodo e confermi semplicemente che la tabella utenti è stata modificata, che sono autorizzati e che ottieni un ID.

    
risposta data 13.10.2011 - 17:08
fonte

Leggi altre domande sui tag