Condividi tramite


Panoramica dei test di GitHub Copilot per .NET

Il test di GitHub Copilot per .NET è una nuova funzionalità in GitHub Copilot Chat integrata in Visual Studio. Questa funzionalità automatizza la creazione, l'esecuzione e il test del codice C# per interi progetti, soluzioni, file, classi o membri. È progettato per gli sviluppatori C# che vogliono avviare velocemente una copertura completa dei casi di test senza dover scrivere manualmente ogni test case. I test di GitHub Copilot possono generare test per framework di test xUnit, NUnit e MSTest.

A differenza dei prompt one-off in modalità agente Copilot, i test di GitHub Copilot per .NET offrono un'esperienza guidata a esecuzione prolungata progettata appositamente per la generazione di test. Produce risultati deterministici basati sulla semantica del compilatore e del linguaggio C#, con una profonda consapevolezza delle convenzioni di codebase, struttura di file e test per garantire test prevedibili e appropriati per il contesto.

Prerequisiti

Annotazioni

Il test di GitHub Copilot per .NET richiede una sottoscrizione di GitHub Copilot a pagamento (singola, aziendale o aziendale). Le sottoscrizioni copilot gratuite non sono supportate.

Perché usare i test di GitHub Copilot per .NET?

I test di GitHub Copilot per .NET offrono un'esperienza completa rispetto alle funzionalità copilot più generali correlate alla generazione di test. La funzionalità di unit test in GitHub Copilot per .NET offre quanto segue:

  • Efficienza: Generare, compilare ed eseguire unit test C# automaticamente per progetti o soluzioni di grandi o piccole dimensioni.
  • Consistenza: Assicurarsi che i test seguano le procedure consigliate e gli standard di progetto. I test vengono creati in un progetto di test separato nella soluzione e vengono generati usando i framework xUnit, NUnit e MSTest. Se la soluzione include già unit test in NUnit o xUnit, i test di GitHub Copilot per .NET generano nuovi test nello stesso framework di unit test. Se nella soluzione non sono presenti unit test, i nuovi test vengono generati usando MSTest.
  • Integrazione: Funziona senza problemi all'interno di Visual Studio, sfruttando le funzionalità di intelligenza artificiale di Copilot.
  • Prevedibilità: Copilot genera test in modo deterministico, basati sulla semantica del linguaggio e del compilatore C#, quindi le asserzioni e i casi limite sono prevedibili e sicuri rispetto ai tipi.

Funzionalità principali

  • Generazione di test automatizzata su larga scala: Creare test per singoli file, più file in un singolo progetto o intere soluzioni.
  • Interazione basata su comandi: Usare i comandi e i parametri supportati (elencati nel messaggio all'interno del /help test di GitHub Copilot).
  • Prompt flessibili: Usa la sintassi strutturata @Test #<target> o prompt a linguaggio naturale libero per descrivere ciò che vuoi testare.

Operazioni che possono essere eseguite dai test di GitHub Copilot

Quando si abilita questa funzionalità, i test di GitHub Copilot interagiscono con la soluzione in diversi modi per generare e convalidare i test:

  • Leggere: Copilot analizza il codice sorgente e la struttura del progetto per comprendere il contesto e le dipendenze.
  • Scrivi: Crea o aggiorna i file di test all'interno della tua soluzione in base ai suggerimenti.
  • Costruire: Lo strumento attiva le compilazioni per compilare il codice e verificare che i test generati si integrino correttamente.
  • Eseguire: Esegue test per confermare che siano superati, e fornire feedback sulla copertura e sulla qualità.

Importante

Il test di Copilot non modifica il codice di produzione all'esterno del processo di generazione dei test. Tutte le modifiche si verificano all'interno dell'ambiente di sviluppo locale e si mantiene il controllo completo per esaminare, accettare o rimuovere suggerimenti.

Azioni eseguite dall'agente @Test

L'agente @Test esegue varie azioni durante la generazione di test. Comprendere queste azioni consente di sapere cosa aspettarsi quando si usa lo strumento.

Operazioni di compilazione e test

L'agente usa le API di Visual Studio (non strumenti da riga di comando come dotnet restore o dotnet test) per eseguire le operazioni seguenti:

  • Ripristino e compilazione: ripristina i pacchetti e compila i progetti in base all'ambito (da un singolo progetto fino all'intera soluzione).
  • Eseguire test: esegue principalmente solo i test generati. Tuttavia, per calcolare il code coverage iniziale e risultante (e per la modalità di ottimizzazione della copertura), l'agente esegue tutti i test all'interno dell'ambito specificato.
  • Elaborare git diff: quando si usa la modalità diff (#git_changes), l'agente analizza le modifiche di cui non è stato eseguito il commit per generare test di destinazione.

Installazione del pacchetto

L'agente installa i pacchetti NuGet in base alle esigenze:

  • Pacchetti del framework di test (MSTest, NUnit o xUnit)
  • Simulare i pacchetti del framework se non sono già presenti
  • Copertura e estensioni TRX per Microsoft Test Platform (MTP) se non presenti

Operazioni LLM

L'agente effettua chiamate LLM per:

  • Analisi del prompt libero
  • Elaborazione riepilogativa
  • Generazione di test

Modifiche di progetto e file

L'agente crea un progetto di test se non esiste per il codice di destinazione.

L'agente usa un file system personalizzato con le garanzie seguenti:

  • Ambito: l'agente non legge mai o scrive file all'esterno della radice del repository (ad eccezione dei log).
  • Preferenza di sola lettura: quando possibile, l'agente usa un file system di sola lettura che impedisce le azioni di scrittura.

L'agente può scrivere nei file seguenti:

  • File di progetto di test
  • File di progetto di origine (ad esempio, aggiunta di InternalsVisibleTo attributi)
  • File di soluzione (indirettamente tramite le API di Visual Studio, ad esempio quando si aggiunge un progetto)
  • Testare i file di origine

Avviso di sicurezza

Quando si esegue per la prima volta il test di GitHub Copilot per .NET, Copilot richiede il consenso per eseguire il codice generato da LLM nel computer. Ciò può includere azioni come l'installazione o il ripristino di pacchetti NuGet e l'esecuzione di test. Se non si concede il consenso generale, il test di GitHub Copilot richiederà l'approvazione esplicita prima di eseguire tale operazione.

Attenzione

Il consenso concede a Copilot la possibilità di richiamare automaticamente comandi arbitrari all'interno della sessione di Visual Studio. Microsoft non può garantire la sicurezza di questi comandi. È consigliabile abilitare questa opzione solo all'interno di un ambiente in modalità sandbox ed eseguire le operazioni necessarie per limitare i privilegi disponibili per tale ambiente. Ad esempio, l'ambiente in modalità sandbox non deve usare un account connesso al cloud per accedere a Windows e l'ambiente in modalità sandbox non deve essere connesso a Visual Studio usando un account GitHub con privilegi con accesso in lettura a repository non pubblici o l'accesso in scrittura ai repository di produzione.

Passaggi successivi

Vedere Generare ed eseguire test usando i test di GitHub Copilot per .NET in Visual Studio.