Condividi tramite


Risoluzione dei problemi relativi a Test Edition

Aggiornamento: novembre 2007

Quando si esegue il test del codice, in determinate condizioni è possibile che vengano generati errori o avvisi o che il test non riesca. In questo argomento vengono descritte alcune di tali condizioni e le misure che è possibile adottare per risolverle.

Risoluzione dei problemi relativi all'esecuzione dei test

Le condizioni che possono impedire la corretta esecuzione dei test possono essere attribuite all'impossibilità di distribuire il file dei test o altri file necessari.

  • Test remoti. Per i test remoti, è possibile che vengano generati errori a causa di problemi di comunicazione con il computer remoto. Questi e altri errori a livello di test e a livello di esecuzione vengono descritti in Risoluzione dei problemi relativi all'esecuzione dei test.

  • Unit test ASP.NET. Se lo unit test ASP.NET è in esecuzione nel processo IIS, è possibile scegliere di eseguire il processo ASP.NET come utente non predefinito, ovvero con un'identità di processo diversa, per motivi di sicurezza. In questo caso, l'esecuzione del test può non riuscire. Per ulteriori informazioni, vedere Cenni preliminari sugli unit test ASP.NET.

  • Distribuzione dei file insieme ai test. Gli errori di distribuzione vengono in genere visualizzati nella pagina Dettagli esecuzione dei test anziché nella pagina Dettagli risultati del singolo test non riuscito. Pertanto, il motivo per cui un singolo test non è riuscito potrebbe non essere ovvio. Per ulteriori informazioni, vedere la sezione "Risoluzione dei problemi di distribuzione dei test" in Cenni preliminari sulla distribuzione dei test.

  • Risoluzione dei problemi relativi ai test Web. Durante l'esecuzione di test Web è possibile che si verifichino vari errori, che possono essere causati da un attributo di associazione dati mancante, da problemi con le impostazioni di sicurezza o da un tentativo di accedere a un sito Web esterno al firewall. Per ulteriori informazioni, vedere Risoluzione dei problemi relativi ai test Web.

  • Risoluzione dei problemi relativi ai test di carico. Durante l'esecuzione di test di carico è possibile che si verifichino vari errori, che possono essere causati da problemi con il database dei test di carico, dall'insieme di contatori nel test di carico, da un rig non configurato correttamente o da uno dei test contenuti nel test di carico. Per ulteriori informazioni, vedere Risoluzione dei problemi relativi ai test di carico.

  • Risoluzione dei problemi relativi a unit test basati su dati. Durante l'esecuzione di unit test basati su dati, potrebbero verificarsi problemi di connessione, autenticazione, distribuzione o di altro tipo. Utilizzare le informazioni riportate in Risoluzione dei problemi relativi a unit test basati su dati per risolvere tali problemi.

Ripetizione della firma di assembly con nome sicuro

Quando si eseguono gli unit test, si testa il codice in un binario. È possibile raccogliere informazioni di code coverage durante l'esecuzione di questi test tramite la strumentazione del binario. Vedere Procedura: ottenere dati di code coverage. Con il processo di strumentazione viene aggiunto codice che genera informazioni di code coverage nel binario.

Se il binario che si sta testando è un assembly con nome sicuro, la modifica del codice causata dalla strumentazione invalida la firma. Quindi Visual Studio tenta automaticamente di ripetere la firma dell'assembly immediatamente dopo il passaggio della strumentazione. Per ulteriori informazioni sugli assembly con nome sicuro, vedere Assembly con nomi sicuri.

La ripetizione della firma può non riuscire se si verificano varie condizioni. Per informazioni su come ovviare a queste condizioni, vedere Strumentazione e ripetizione della firma di assembly.

Dati di code coverage e VSPerfMon.exe

Se si esegue VSPerfMon.exe contemporaneamente ai test per i quali si raccolgono dati di code coverage, si verificano i seguenti eventi:

  • Se si esegue VSPerfMon con l'opzione TRACE o SAMPLE, l'esecuzione simultanea del test non riesce e nella pagina Dettagli esecuzione dei test viene segnalato un errore.

  • Se si esegue VSPerfMon.exe con l'opzione COVERAGE, il processo VSPerfMon.exe viene arrestato.

In entrambi i casi, la soluzione alternativa è evitare di eseguire contemporaneamente VSPerfMon.exe e i test per i quali si raccolgono dati di code coverage. Per ulteriori informazioni sullo strumento VSPerfMon.exe, vedere VSPerfMon.

Situazioni in cui si verifica il problema

VSPerfMon viene eseguito in genere nei seguenti casi:

  • È stata avviata una sessione di analisi, possibilmente in un'istanza di Visual Studio diversa da quella in cui si eseguono i test.

  • Si raccolgono dati di code coverage o di analisi eseguendo VSPerfMon.exe direttamente o, caso più comune, tramite il wrapper VSPerfCmd.exe.

Visualizzazione non corretta dei dati di code coverage

Se è stato richiesto di raccogliere dati di code coverage per i test ma questi non vengono visualizzati o vengono visualizzati in modo diverso dal previsto, è possibile che si sia verificata una delle seguenti situazioni:

  • Dati di code coverage non visualizzati. Durante l'esecuzione dei test, determinati binari, ad esempio le DLL COM, vengono caricati dal percorso originale e non dalla directory di distribuzione dei test. Tali binari devono essere instrumentati sul posto. In caso contrario, sebbene l'esecuzione del test riesca e non vengano generati avvisi a livello di esecuzione, i dati di code coverage non vengono raccolti. Per ulteriori informazioni, vedere Scelta della cartella di strumentazione.

  • Evidenziazione dei dati di code coverage non presente. Quando si eseguono i test, si raccolgono i dati di code coverage e quindi si visualizzano i risultati dei test, in Visual Studio il codice testato nell'esecuzione dei test viene indicato tramite evidenziazione nel relativo file del codice sorgente. È possibile scegliere i colori che indicano i dati analizzati, non analizzati o parzialmente analizzati. Se questa evidenziazione non è presente o non è completa, assicurarsi che i colori prescelti siano diversi dal colore di sfondo del file del codice sorgente. Per ulteriori informazioni sulla scelta dei colori per l'evidenziazione, vedere la sezione "Modifica della visualizzazione dei dati di code coverage" in Procedura: ottenere dati di code coverage.

  • Unione non corretta dei dati di code coverage. È possibile unire risultati che includono una o più esecuzioni di test ASP.NET, ma nella finestra Risultati code coverage i dati ASP.NET verranno visualizzati in Risultati uniti in nodi distinti anziché in un unico nodo unito. Per ulteriori informazioni, vedere Utilizzo di dati di code coverage uniti.

  • Visualizzazione parziale dei dati di code coverage uniti. Dopo aver unito dati di code coverage, è possibile esportarli su disco come file XML. Se questo file viene reimportato e quindi unito a dati aggiuntivi, non tutte le statistiche verranno visualizzate. Per ulteriori informazioni, vedere Utilizzo di dati di code coverage uniti.

  • Impossibile importare i dati di code coverage. In Visual Studio deve essere possibile individuare determinati file su disco al fine di importare i dati di code coverage. Per ulteriori informazioni, vedere Utilizzo di dati di code coverage uniti.

  • Binari instrumentati sovrascritti. Si sta tentando di raccogliere dati di code coverage da un programma in esecuzione durante un test manuale. Se si utilizza CTRL+F5 per avviare tale programma, l'azione di CTRL+F5 fa sì che il binario del programma venga generato di nuovo. In questo modo il binario instrumentato viene sovrascritto e pertanto non è possibile raccogliere dati di code coverage.

Per informazioni generali sulla raccolta di dati di code coverage, vedere Procedura: ottenere dati di code coverage.

Problemi di prestazioni quando si aggiungono metodi di test

Quando si aggiunge un nuovo metodo di test, l'elaborazione viene eseguita in background per aggiungere questo metodo di test nella finestra Visualizzazione test e nell'Editor elenco dei test. Pertanto, è possibile immediatamente visualizzarlo. Se nell'intero progetto o in una sola classe di test sono presenti molti metodi di test, è possibile che si verifichino problemi di prestazioni causati dall'elaborazione automatica quando si aggiunge un nuovo metodo di test alla classe di test.

Se si verificano problemi di prestazioni, sono disponibili tre possibili soluzioni:

  • È possibile suddividere la classe di test in classi parziali e dividere i metodi di test tra le classi parziali. In tal modo si riduce il numero di metodi in una singola classe di test e si migliorano le prestazioni quando si aggiunge un nuovo metodo di test alla classe di test.

  • È possibile creare un nuovo progetto di test, spostare alcune classi di test in questo nuovo progetto, quindi rimuoverle dal progetto di test originale. In tal modo si riduce il numero di metodi di test in un assembly e si migliorano le prestazioni.

  • È possibile disattivare l'elaborazione in background che aggiunge i metodi di test nella finestra Visualizzazione test e nell'Editor elenco dei test. In tal modo si migliorano le prestazioni quando viene aggiunto un metodo di test. Tuttavia, se questa opzione è impostata, il metodo di test non potrà essere visualizzato nella finestra Visualizzazione test o nell'Editor elenco dei test finché non si compila la classe contenente il metodo di test e si fa clic su Aggiorna nella finestra Visualizzazione test o nell'Editor elenco dei test.

    Nota:

    Quando questa opzione è impostata, i nuovi metodi di test saranno individuati in fase di compilazione. Pertanto aumenterà il tempo totale impiegato per compilare la soluzione.

Per disattivare l'individuazione automatica di metodi di test

  1. Dal menu Strumenti, scegliere Opzioni.

    Verrà visualizzata la finestra di dialogo Opzioni

  2. Espandere Strumenti di test nel riquadro sinistro e scegliere Progetto di test.

  3. Per disattivare l'individuazione automatica dei metodi di test, selezionare Disattiva individuazione in background dei metodi di test.

    Nota:

    Tuttavia, se questa opzione è impostata, un metodo di test aggiunto a una classe di testo non potrà essere visualizzato nella finestra Visualizzazione test o nell'Editor elenco dei test finché non si compila la classe contenente il metodo di test.

Vedere anche

Attività

Procedura: unire dati di code coverage

Risoluzione dei problemi relativi ai test Web

Risoluzione dei problemi relativi ai test di carico

Concetti

Cenni preliminari sulla distribuzione dei test

Utilizzo di dati di code coverage uniti

Risoluzione dei problemi relativi a unit test basati su dati

Cenni preliminari sugli unit test ASP.NET