Domanda

Esiste qualcosa come la generazione di unit test? Se è così ...

... funziona bene?

... Quali sono le soluzioni di generazione automatica disponibili per .NET?

... ci sono esempi di utilizzo di una tecnologia come questa?

... va bene solo per alcuni tipi di applicazioni o potrebbe essere usato per sostituire tutti i test unitari scritti manualmente?

È stato utile?

Soluzione

Dai un'occhiata a Pex . È un progetto Microsoft Research. Dal sito Web:

Pex genera test unitari da test unitari parametrizzati scritti a mano attraverso test esplorativi automatizzati basati sull'esecuzione simbolica dinamica.

Altri suggerimenti

Credo che non abbia senso la generazione di unit test, per quanto riguarda TDD.

Esegui test unitari solo per essere sicuro che tu (come sviluppatore) sei sulla buona strada per quanto riguarda il design e le specifiche. Una volta che inizi a generare automaticamente i test, perde quello scopo. Sicuramente significherebbe probabilmente una copertura del codice al 100%, ma quella copertura sarebbe insensata e vuota.

Test unitari automatizzati significano anche che la tua strategia è test-after, il che è opposto al principio test-before del TDD. Ancora una volta, TDD non riguarda i test.

Detto questo, credo che MSTest disponga di uno strumento di generazione automatica di unit test: sono stato in grado di usarne uno con VS2005.

Aggiornato per il 2017:

Unit Test Boilerplate Generator funziona per VS 2015-2017 e viene mantenuto . Sembra funzionare come pubblicizzato.

Ho creato 'ErrorUnit' e genera test unit MSTest o NUnit dal Visual Studio in pausa o dai log degli errori; Finalmente finte variabili di classe, parametri di metodo e accesso ai dati EF. ( http://ErrorUnit.com )

Nessun generatore di Unit Test può fare tutto; I test unitari sono divisi classicamente in tre parti: Disponi, Agisci e Asserisci; la parte Arrange è la parte più grande di un unit test e imposta tutte le condizioni preliminari per un test, prendendo in giro tutti i dati su cui si dovrà agire nel test, la parte Act di un Unit Test è di solito una riga e si attiva la parte di codice in fase di test che passa attraverso quei dati, e infine la parte Assert del test prende i risultati della parte Act e verifica che abbia soddisfatto le aspettative (possono essere zero righe quando si accerta solo che non ci siano errori).

Generatori di unit test generalmente possono fare solo le parti 'Disponi' e 'Agisci' durante la creazione del test unitario; tuttavia i generatori di unit test generalmente non scrivono porzioni 'Assert' poiché solo tu sai cosa è corretto e cosa non è corretto per i tuoi scopi. Pertanto, per completezza è necessario inserire manualmente / estendere i test delle unità.

Sono d'accordo con Jon. Alcuni tipi di test, come i test fuzz automatici, traggono sicuramente vantaggio dalla generazione automatizzata. Sebbene sia possibile utilizzare le strutture di un framework di test unitari per raggiungere questo obiettivo, ciò non raggiunge gli obiettivi associati a una buona copertura dei test unitari.

Parasoft .TEST ha una funzionalità di generazione di test. Utilizza il framework NUnit per la descrizione dei test e la valutazione delle asserzioni.

È possibile preparare una suite di test di regressione automatizzando la generazione di scenari (costruendo input e chiamando il metodo testato) e creando asserzioni basate sul comportamento attuale della base di codice. Successivamente, dopo che la base di codice sotto test si evolve, le asserzioni indicano regressioni o possono essere facilmente registrate di nuovo.

Ho usato NStub per stub testare le mie lezioni. Funziona abbastanza bene.

Ho usato strumenti per generare casi di test. Penso che funzioni bene per test di livello superiore, orientati all'utente finale. Roba che fa parte del Test di accettazione dell'utente, più che di puro test unitario.

Uso gli strumenti di unit test per questo test di accettazione. Funziona bene.

Vedi Strumenti per costruire casi di test .

Esiste un prodotto commerciale chiamato AgitarOne (www.agitar.com) che genera automaticamente classi di test JUnit.
Non l'ho usato, quindi non posso commentare quanto sia utile, ma se al momento stavo facendo un progetto Java lo guarderei.

Non conosco un equivalente .net (Agitar ha annunciato una versione .net ma AFAIK non si è mai materializzato).

So che questo thread è vecchio ma per il bene di tutti gli sviluppatori, esiste una buona libreria chiamata unit test generator:

https://visualstudiogallery.msdn.microsoft.com/45208924- e7b0-45df-8cff-165b505a38d7

Good dev

GennyMcGenFace crea un test unitario per ogni funzione in la tua classe e genera oggetti con parole / valori casuali in ciascun parametro.

  • Genera unit test per ciascuna funzione della tua classe
  • Calcola i valori validi generati casualmente per gli input dei parametri e l'istruzione return.
  • Le interfacce mockable restituiscono valori generati casualmente validi
  • Genera unit test per ciascuna funzione della tua classe
  • Importa tutti gli spazi dei nomi necessari nella classe di test

Aiuta a configurare i test unitari, specialmente se si hanno oggetti di input con molti parametri.

Il test unitario sarà simile a questo

Selenium genera test unitari da comandi utente su una pagina Web, piuttosto ingegnosi .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top