Come sviluppatore che ha lavorato principalmente alla programmazione funzionale in F # negli ultimi anni, sono molto affezionato al mio REPL e lo uso eseguendo il mio codice mentre procedo, testando e perfezionando ogni funzione mentre scrivo. Tuttavia, un'area in cui spesso non riesco come sviluppatore sta creando buoni test unitari per ogni funzione e li invio con la mia richiesta iniziale di revisione del codice.
Altri sviluppatori del mio team che provengono da uno sfondo più OOP / C # hanno un flusso di lavoro che è inferiore a REPL-driven e usa i test unitari (MSTEST) per eseguire i test sperimentali che faccio nel REPL. Mentre questo li lascia con un gruppo di unit test alla fine del loro ciclo, preferisco ancora il REPL, perché posso scorrere e testare molto più velocemente, senza dover costruire il progetto e attendere il motore di test ogni volta.
Dato che siamo un team di F #, ritengo che REPL sia lo strumento giusto per i test sperimentali durante lo sviluppo, ma ritengo anche che occorrano test unitari di unità che vengano eseguiti durante i build come parte del nostro processo di check-in. Inoltre non mi piace particolarmente, dato che dobbiamo creare classi di test e metodi di test per i test unitari, dal momento che in realtà non usiamo le classi molto spesso altrove, ma posso occuparmene. Il valore di avere una serie ripetibile di test eseguiti su ogni build per evidenziare immediatamente eventuali modifiche di rottura è abbastanza utile per gestire le idiosincrasie di un framework di test OOP.
Nel fare alcune ricerche, ho visto cose come l' Cursive IDE per Clojure che combina un REPL con il clojure.test
framework in modo che il codice che scrivi nel REPL possa diventare il test unitario. Sembra una soluzione ideale e sembra che il progetto di test F # Expecto possa parzialmente supportare questo modello, quindi sto pensando di fare una proposta per provarlo. Tuttavia, non voglio introdurre modifiche dirompenti al flusso di lavoro e al processo di test a meno che non sia la migliore soluzione disponibile.
Sono state apportate alcune semplici modifiche al flusso di lavoro che ho trascurato per risolvere il problema senza modificare gli strumenti di test? In che modo REPL e Unit Test vengono utilizzati insieme in altri grandi progetti basati su FP?