Dela via


Generera enhetstester med GitHub Copilot

I den här artikeln utforskar du hur du genererar enhetstester och testprojekt i C# med hjälp av xUnit-ramverket med hjälp av Visual Studio-kommandon och GitHub Copilot. Att använda Visual Studio i kombination med GitHub Copilot förenklar avsevärt processen för att generera och skriva enhetstester.

Skapa ett testprojekt

Anta att det finns en ProductService-klass med en GetProductById-metod som är beroende av IProductDataStorage- och ICacheClient-gränssnitten.

public class ProductService(
    IProductDataStorage productDataStorage,
    ICacheClient cacheClient)
{
    public async Task<Product?> GetProductById(int productId)
    {
        var product = await cacheClient.GetProduct(productId);

        if (product is not null)
        {
            return product;
        }

        product = await productDataStorage.GetProduct(productId);

        if (product is not null)
        {
            await _cacheClient.SetProduct(product);
        }

        return product;
    }
}

Följ dessa steg för att generera ett testprojekt och en stub-metod:

  • Välj metoden.
  • Högerklicka och välj Skapa enhetstester.

kommandot för att skapa enhetstester

I dialogrutan Skapa enhetstester väljer du xUnit från listrutan Test Framework.

Anmärkning

Kommandot Create Unit Tests är standard för MSTest-ramverket. Men eftersom det här exemplet använder xUnit måste du installera Visual Studio-tillägget xUnit.net.TestGenerator2022.

Skapa enhetstester-fönstret

  • Om du inte har något testprojekt ännu väljer du Nytt testprojekt eller väljer ett befintligt.
  • Om det behövs anger du en mall för namnområdet, klassen och metodnamnet och klickar sedan på OK.

Efter några sekunder hämtar Visual Studio de nödvändiga paketen ProductServiceTests och du får ett genererat xUnit-projekt med nödvändiga paket och struktur, en referens till projektet som testas samt klassen och en stub-metod.

genererad stubmetod

Generera själva testerna

  • Välj den metod som testas igen.

  • Högerklicka och välj Fråga Copilot.

  • Ange en enkel fråga, till exempel:

    "Generera enhetstester med xunit, nsubstitute och infoga resultatet i #ProductServiceTests fil."

    Du måste välja testklassen när du skriver #-tecknet.

Tips

För snabbsökning är det önskvärt att ProductServiceTests är öppen på en separat flik.

Fråga efter att generera tester

Kör kommandotolken, klicka på Accepteraoch Copilot genererar testkoden. Därefter återstår det att installera de nödvändiga paketen.

När paketen har installerats kan testerna köras. Det här exemplet fungerade på det första försöket: Copilot vet hur man arbetar med NSubstitute, och alla beroenden definierades via gränssnitt.

Genererade tester