Cvičení – vývoj testů jednotek pomocí nástrojů GitHub Copilot

Dokončeno

GitHub Copilot vám může pomoct psát testy jednotek pro váš kód. Ke generování testů jednotek můžete použít GitHub Copilot několik způsobů:

  • Generování testovacích případů: Ke generování testovacích případů pro váš kód můžete použít GitHub Copilot. Copilot může navrhnout testovací případy na základě kódu, který jste napsali. Tyto testovací případy pak můžete použít k vytvoření testů jednotek pro váš kód.
  • Generování testovacích metod: Copilot může také generovat testovací metody pro váš kód. Tyto testovací metody můžete použít k vytvoření testů jednotek pro váš kód.
  • Generování testovacích kontrolních výrazů: Copilot může navrhovat kontrolní výrazy, které můžete použít v jednotkových testech. Tyto kontrolní výrazy vám můžou pomoct ověřit chování kódu.
  • Generování testovacích napodobení: Copilot může generovat napodobené objekty, které můžete použít v testech jednotek. Tyto napodobené objekty vám můžou pomoct izolovat kód, který testujete, od závislostí.
  • Generování testovacích dat: Copilot může generovat testovací data, která můžete použít v testech jednotek. Tato testovací data vám můžou pomoct s testováním kódu s různými vstupy.
  • Generování kódu pro nastavení testu: Copilot může vygenerovat kód pro nastavení vašich jednotkových testů. Tento kód vám může pomoct nastavit testovací prostředí před spuštěním testů.
  • Generování kódu pro ukončení testů: Copilot může vygenerovat kód pro jednotkové testy. Tento kód vám může pomoct vyčistit testovací prostředí po spuštění testů.

Vaše stávající řešení obsahuje projekt testování jednotek s názvem UnitTests. Tento projekt již obsahuje testy jednotek, které částečně pokrývají třídy služby v projektu ApplicationCore.

V tomto cvičení použijete GitHub Copilot k dokončení následujících úloh:

  1. Prozkoumejte přístup k testování jednotek implementovaný projektem UnitTests.

  2. Rozšiřte projekt UnitTests a začněte testovat třídy přístupu k datům v Library.Infrastructure projektu.

Prozkoumání přístupu k testování jednotek implementovaným projektem UnitTests

Váš existující základ kódu obsahuje projekt UnitTests, který implementuje následující strukturu složek:

  • UnitTests\
    • ApplicationCore\
      • LoanService\
        • ExtendLoan.cs
        • ReturnLoan.cs
      • PatronService\
        • RenewMembership.cs
    • LoanFactory.cs
    • PatronFactory.cs

Tato struktura zrcadlí a podporuje Services část ApplicationCore projektu.

  • ApplicationCore\
    • Služby\
      • LoanService.cs: Obsahuje metody ExtendLoan a ReturnLoan metody.
      • PatronService.cs: Obsahuje metodu RenewMembership .

V této části cvičení použijete GitHub Copilot k prozkoumání přístupu testování jednotek implementovaného projektem UnitTests.

K dokončení této části cvičení použijte následující kroky:

  1. Otevřete zobrazení chatu.

  2. Do kontextu chatu přidejte následující soubory: LoanFactory.cs, PatronFactory.cs, ExtendLoan.cs, ReturnLoan.cs, RenewMembership.cs, LoanService.cs. PatronService.cs.

    Soubory jsou umístěny v souboru tests/UnitTests, tests/UnitTests/ApplicationCore/LoanService, tests/UnitTests/ApplicationCore/PatronServicea src/Library.ApplicationCore/Services složky.

  3. Zadejte následující výzvu:

    @workspace Explain the approach to unit testing that's been implemented in this workspace.
    

    Tato výzva vyzve GitHub Copilot, aby vysvětlil přístup k testování jednotek v kontextu pracovního prostoru. Do výzvy k zadání kontextu odpovědi je zahrnuto několik souborů.

  4. Projděte si odpověď z GitHub Copilotu.

    Měli byste vidět vysvětlení, které je podobné následujícímu popisu:

    • Napodobení závislostí: Testy slouží NSubstitute k vytváření napodobených implementací rozhraní.
    • Testovací organizace: Testy jsou uspořádané do samostatných souborů na základě otestovaných metod. Například ExtendLoan metody ReturnLoan se testují v samostatných souborech ve LoanService složce.
    • Kontrolní výrazy: Kontrolní výrazy slouží k ověření očekávaného výsledku každého testu.
    • Testovací scénáře: Testy pokrývají různé scénáře pro každou metodu, například vrácení různých stavů na základě vstupu.
    • Izolace: Každý test je izolovaný od ostatních, aby se zabránilo vedlejším účinkům.
    • Metody továrny: Metody továrny slouží k konzistentnímu vytváření testovacích dat.
  5. Zadejte následující výzvu:

    @workspace What are the benefits of this approach to unit testing?
    
  6. Projděte si odpověď z GitHub Copilotu.

    Měli byste vidět vysvětlení, které identifikuje seznam výhod podobných následujícímu seznamu:

    • Izolace závislostí: Použití napodobení izoluje jednotku práce od závislostí.
    • Opakovatelnost a konzistence: Metody továrny poskytují konzistentní způsob vytváření testovacích dat.
    • Čitelnost a udržovatelnost: Popisné metody testů a jasné uspořádání testovacích kroků zlepšují čitelnost testů.
    • Komplexní pokrytí: Testování různých scénářů zajišťuje, že kód je robustní a zpracovává různé hraniční případy.
    • Oddělení obav: Oddělení vytváření testovacích dat od samotné logiky testu udržuje testy čisté a zaměřuje se na testované chování.
    • Okamžitá zpětná vazba: Spuštění testů jednotek poskytuje okamžitou zpětnou vazbu ohledně správnosti kódu.
  7. Do kontextu chatu přidejte následující soubory: ExtendLoan.cs, ReturnLoan.cs, RenewMembership.cs, LoanFactory.cs, PatronFactory.cs, LoanService.cs. PatronService.cs.

  8. Zadejte následující výzvu:

    @workspace How can I extend the `UnitTests` project to begin testing methods in the `Library.Infrastructure` project? Provide a process overview.
    

    Tato výzva požádá GitHub Copilot, aby poskytl přehled procesu pro rozšíření UnitTests projektu, aby začal testovat metody v Library.Infrastructure projektu. Do výzvy k zadání kontextu odpovědi je zahrnuto několik souborů.

  9. Projděte si odpověď z GitHub Copilotu.

    Měli byste vidět vysvětlení, které je podobné následujícímu popisu:

    1. Add Project Reference:
    
      - Open the `UnitTests.csproj` file located at `tests/UnitTests/UnitTests.csproj`.
      - Add a reference to the `Library.Infrastructure` project.
    
    2. Identify methods to test:
    
      - Identify the methods in the `Library.Infrastructure` project that need to be tested. For example, if you want to test the `LoanService` class, identify the methods in the `LoanService` class that need to be tested.
    
    3. Create Test Classes:
    
      - Create new test classes in the `tests/UnitTests` directory to test the methods in the `Library.Infrastructure` project. For example, if you want to test `LoanService`, create a file named `LoanServiceTests.cs`.
    
    4. Write Unit Tests:
    
      - In the newly created test classes, write unit tests for the methods in the `Library.Infrastructure` project. Use the xUnit framework for writing tests and NSubstitute for mocking dependencies.
    
    5. Run Tests:
    
      - Use Visual Studio Code's integrated terminal or the Test Explorer to run the tests.
      - Ensure that the tests are discovered and executed correctly.
    

Rozšíření projektu UnitTests za účelem zahájení testování tříd přístupu k datům

V této části cvičení použijete GitHub Copilot k vytvoření testů jednotek pro Library.Infrastructure projekt.

Projekt Library.Infrastructure obsahuje třídy přístupu k datům, které komunikují se systémem souborů za účelem načtení a ukládání dat. Projekt obsahuje následující třídy:

  • JsonData: Třída, která načítá a ukládá data JSON.
  • JsonLoanRepository: Třída, která implementuje rozhraní ILoanRepository a používá třídu JsonData k načtení a ukládání dat půjčky.
  • JsonPatronRepository: Třída, která implementuje rozhraní IPatronRepository a používá třídu JsonData k načtení a ukládání patronových dat.

Začnete psaním testů jednotek pro JsonLoanRepository třídu.

K dokončení této části cvičení použijte následující kroky:

  1. Do kontextu chatu přidejte následující soubory: UnitTests.csproj.

  2. Do zobrazení chatu zadejte následující výzvu:

    @workspace Explain how to add a reference to the Library.Infrastructure project inside `UnitTests.csproj`.
    

    Tato výzva požádá GitHub Copilot, aby vysvětlil, jak přidat odkaz na Library.Infrastructure projekt uvnitř UnitTests.csproj souboru.

  3. Pomocí odpovědi GitHub Copilot aktualizujte soubor UnitTests.csproj.

    Aktualizovaný soubor UnitTests.csproj by měl vypadat podobně jako následující kód XML:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <IsPackable>false</IsPackable>
        <IsTestProject>true</IsTestProject>
      </PropertyGroup>
      <ItemGroup>
        <PackageReference Include="coverlet.collector" Version="6.0.0" />
        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
        <PackageReference Include="NSubstitute" Version="5.1.0" />
        <PackageReference Include="xunit" Version="2.5.3" />
        <PackageReference Include="xunit.runner.visualstudio" Version="2.5.3" />
      </ItemGroup>
      <ItemGroup>
        <Using Include="Xunit" />
      </ItemGroup>
      <ItemGroup>
        <ProjectReference Include="..\..\src\Library.ApplicationCore\Library.ApplicationCore.csproj" />
        <ProjectReference Include="..\..\src\Library.Infrastructure\Library.Infrastructure.csproj" />
      </ItemGroup>
    </Project>
    
  4. Otevřete soubor JsonLoanRepository.cs.

    JsonLoanRepository.cs se nachází ve src/Library.Infrastructure/Data/ složce.

  5. Než soubor zkontrolujete, udělejte si chvilku JsonLoanRepository.cs .

    using Library.ApplicationCore;
    using Library.ApplicationCore.Entities;
    
    namespace Library.Infrastructure.Data;
    
    public class JsonLoanRepository : ILoanRepository
    {
        private readonly JsonData _jsonData;
    
        public JsonLoanRepository(JsonData jsonData)
        {
            _jsonData = jsonData;
        }
    
        public async Task<Loan?> GetLoan(int id)
        {
            await _jsonData.EnsureDataLoaded();
    
            foreach (Loan loan in _jsonData.Loans!)
            {
                if (loan.Id == id)
                {
                    Loan populated = _jsonData.GetPopulatedLoan(loan);
                    return populated;
                }
            }
            return null;
        }
    
        public async Task UpdateLoan(Loan loan)
        {
            Loan? existingLoan = null;
            foreach (Loan l in _jsonData.Loans!)
            {
                if (l.Id == loan.Id)
                {
                    existingLoan = l;
                    break;
                }
            }
    
            if (existingLoan != null)
            {
                existingLoan.BookItemId = loan.BookItemId;
                existingLoan.PatronId = loan.PatronId;
                existingLoan.LoanDate = loan.LoanDate;
                existingLoan.DueDate = loan.DueDate;
                existingLoan.ReturnDate = loan.ReturnDate;
    
                await _jsonData.SaveLoans(_jsonData.Loans!);
    
                await _jsonData.LoadData();
            }
        }
    }
    
  6. Všimněte si následujících podrobností o JsonLoanRepository třídě:

    • Třída JsonLoanRepository obsahuje dvě metody: GetLoan a UpdateLoan.
    • Třída JsonLoanRepository používá JsonData objekt k načtení a ukládání dat půjčky.

    Začnete psaním testů jednotek pro metodu GetLoan .

  7. V projektu vytvořte následující strukturu UnitTests složek.

    • Infrastruktura\
      • JsonLoanRepository\

    Tato struktura složek zrcadlí přístup použitý pro Library.ApplicationCore testy jednotek.

  8. Vytvořte soubor třídy s názvem GetLoan ve JsonLoanRepository složce.

  9. Zvažte požadavky konstruktoru polí a tříd na testy jednotek za minutu GetLoan .

    Metoda JsonLoanRepository.GetLoan obdrží parametr ID půjčky při jeho zavolání. Metoda používá _jsonData.EnsureDataLoaded k získání nejnovějších dat JSON a _jsonData.Loans k vyhledání odpovídající půjčky. Pokud metoda najde odpovídající ID půjčky, vrátí vyplněný objekt půjčky (populated). Pokud metoda nemůže najít odpovídající ID půjčky, vrátí null.

    Pro testy jednotek GetLoan:

    • Pomocí napodobeného objektu úložiště půjček (_mockLoanRepository) můžete otestovat případ, kdy se najde odpovídající ID. Načtěte napodobení ID, které chcete najít. Třída ReturnLoanTest ukazuje, jak napodobovat ILoanRepository rozhraní a vytvořit instanci objektu napodobení úložiště půjček.

    • K otestování případu, kdy se nenajde žádné odpovídající ID, můžete použít objekt úložiště nesměšných půjček (_jsonLoanRepository). Stačí zadat ID půjčky, které víte, není v souboru (mělo by fungovat něco přes 100).

    • K vytvoření objektu, který není napodobenýJsonData, budete potřebovat JsonLoanRepository objekt. UnitTests Vzhledem k tomu, že projekt nemá přístup k objektu vytvořenému JsonDataConsoleApp projektem, budete ho IConfiguration muset vytvořit pomocí rozhraní.

  10. Do kontextu chatu přidejte následující soubory: JsonLoanRepository.cs, ReturnLoan.cs, LoanService.cs, LoanFactory.cs, . JsonData.cs

  11. Zadejte následující výzvu:

    @workspace Create fields and a class constructor for the `GetLoan.cs` file. The class will be used to create unit tests for the GetLoan method in the `JsonLoanRepository.cs` file. Create the following private readonly fields: `_mockLoanRepository`, `_jsonLoanRepository`, `_configuration`, and `_jsonData`. Instantiate the fields in the `GetLoanTest` constructor. Use `ConfigurationBuilder` to create a `_configuration` object that can be used to instantiate the JsonData object.
    

    Tato výzva vyzve GitHub Copilot k návrhu polí a konstruktoru třídy.

  12. Projděte si odpověď z GitHub Copilotu.

    Měl by se zobrazit návrh kódu podobný následujícímu fragmentu kódu:

    using NSubstitute;
    using Library.ApplicationCore;
    using Library.ApplicationCore.Entities;
    using Library.ApplicationCore.Interfaces;
    using Library.Infrastructure.Data;
    using Microsoft.Extensions.Configuration;
    
    namespace UnitTests.Infrastructure.JsonLoanRepository;
    
    public class GetLoanTest
    {
        private readonly ILoanRepository _mockLoanRepository;
        private readonly JsonLoanRepository _jsonLoanRepository;
        private readonly IConfiguration _configuration;
        private readonly JsonData _jsonData;
    
        public GetLoanTest()
        {
            _mockLoanRepository = Substitute.For<ILoanRepository>();
            _configuration = new ConfigurationBuilder()
                .AddJsonFile("appsettings.json")
                .Build();
            _jsonData = new JsonData(_configuration);
            _jsonLoanRepository = new JsonLoanRepository(_jsonData);
        }
    
        // Add test methods here
    }
    
  13. K aktualizaci GetLoan.cspoužijte návrh kódu, který poskytuje GitHub Copilot .

  14. Všimněte si následujících problémů:

    • Došlo ke konfliktu mezi oborem názvů a použitím JsonLoanRepository v kódu. Obor názvů byste měli aktualizovat v GetLoans.cs tak, aby používal vzor použitý v souborechReturnLoan.cs.RenewMembership.cs

    • Pokud ILoanRepository kód nerozpoznáte, možná budete muset na začátek souboru přidat using direktivu Library.ApplicationCore .

    • _configuration Pokud objekt není správně vytvořena instance, možná budete muset aktualizovat řádek kódu obsahující ConfigurationBuilder. Můžete zjednodušit použití kódu _configuration = new ConfigurationBuilder().Build();.

    • Pokud gitHub Copilot navrhuje, using Library.ApplicationCore.Interfaces můžete ho odstranit z horní části souboru.

  15. GetLoan.cs Aktualizujte soubor tak, aby odpovídal následujícímu fragmentu kódu:

    using NSubstitute;
    using Library.ApplicationCore;
    using Library.ApplicationCore.Entities;
    using Library.Infrastructure.Data;
    using Microsoft.Extensions.Configuration;
    
    namespace UnitTests.Infrastructure.JsonLoanRepositoryTests;
    
    public class GetLoanTest
    {
        private readonly ILoanRepository _mockLoanRepository;
        private readonly JsonLoanRepository _jsonLoanRepository;
        private readonly IConfiguration _configuration;
        private readonly JsonData _jsonData;
    
        public GetLoanTest()
        {
            _mockLoanRepository = Substitute.For<ILoanRepository>();
            _configuration = new ConfigurationBuilder().Build();
            _jsonData = new JsonData(_configuration);
            _jsonLoanRepository = new JsonLoanRepository(_jsonData);
        }
    
    }
    
  16. Do kontextu chatu přidejte následující soubory: JsonLoanRepository.cs, ReturnLoan.cs, LoanService.csLoanFactory.cs, , JsonData.cs, . Loans.json

  17. Vyberte obsah GetLoan.cs souboru a do zobrazení chatu zadejte následující výzvu:

    @workspace Update the selection to include a unit test for the `JsonLoanRepository.GetLoan` method. The unit test should test the case where a loan ID is found in the data. Use `_mockLoanRepository` to arrange the expected return loan. Use `_jsonLoanRepository` to return an actual loan. Asserts should verify that the return loan ID matches the expected loan ID. Use a loan ID that exists in the `Loans.json` file.
    

    Tato výzva vyzve GitHub Copilot k návrhu testu jednotek pro metodu JsonLoanRepository.GetLoan . Test jednotek by měl otestovat případ, kdy se v datech nachází ID půjčky. Test by měl použít _mockLoanRepository k zajištění očekávané výnosové půjčky, _jsonLoanRepository k vrácení skutečné půjčky a k ověření, že ID výnosové půjčky odpovídá očekávanému ID půjčky. ID půjčky Loans.json by mělo existovat v souboru.

  18. Projděte si odpověď z GitHub Copilotu.

    Měl by se zobrazit návrh kódu podobný následujícímu fragmentu kódu:

    using NSubstitute;
    using Library.ApplicationCore;
    using Library.ApplicationCore.Entities;
    using Library.Infrastructure.Data;
    using Microsoft.Extensions.Configuration;
    using Xunit;
    
    namespace UnitTests.Infrastructure.JsonLoanRepositoryTests;
    
    public class GetLoanTest
    {
        private readonly ILoanRepository _mockLoanRepository;
        private readonly JsonLoanRepository _jsonLoanRepository;
        private readonly IConfiguration _configuration;
        private readonly JsonData _jsonData;
    
        public GetLoanTest()
        {
            _mockLoanRepository = Substitute.For<ILoanRepository>();
            _configuration = new ConfigurationBuilder().Build();
            _jsonData = new JsonData(_configuration);
            _jsonLoanRepository = new JsonLoanRepository(_jsonData);
        }
    
        [Fact(DisplayName = "JsonLoanRepository.GetLoan: Returns loan when loan ID is found")]
        public async Task GetLoan_ReturnsLoanWhenLoanIdIsFound()
        {
            // Arrange
            var loanId = 1; // Use a loan ID that exists in the Loans.json file
            var expectedLoan = new Loan { Id = loanId, BookItemId = 101, PatronId = 202, LoanDate = DateTime.Now, DueDate = DateTime.Now.AddDays(14) };
            _mockLoanRepository.GetLoan(loanId).Returns(expectedLoan);
            await _jsonData.EnsureDataLoaded(); // Ensure data is loaded
    
            // Act
            var actualLoan = await _jsonLoanRepository.GetLoan(loanId);
    
            // Assert
            Assert.NotNull(actualLoan);
            Assert.Equal(expectedLoan.Id, actualLoan?.Id);
        }
    }
    
  19. K aktualizaci GetLoan.cspoužijte návrh kódu, který poskytuje GitHub Copilot .

    Metoda JsonLoanRepository.GetLoan volá _jsonData.EnsureDataLoaded , aby se zajistilo načtení dat JSON. Řádek kódu, který volá _jsonData.EnsureDataLoaded testovací metodu, můžete odstranit, pokud je zahrnuta.

    Loan Pokud třída není v kódu rozpoznána, ujistěte se, že máte using Library.ApplicationCore.Entities příkaz v horní části souboru GetLoan.cs. Třída Loan se nachází v Library.ApplicationCore.Entities oboru názvů.

  20. AccelerateDevGitHubCopilot Sestavte řešení, abyste zajistili, že nedojde k žádným chybám.

  21. Pomocí funkce automatického dokončování GitHubu Copilot vytvořte test pro případ, kdy se ID půjčky nenašlo.

    Za metodou GetLoan_ReturnsLoanWhenLoanIdIsFound vytvořte prázdný řádek.

    Přijměte návrhy automatického dokončování a vytvořte novou testovací metodu.

  22. Projděte si odpověď z GitHub Copilotu.

    Funkce automatického dokončování GitHub Copilotu pravděpodobně napodobí očekávanou půjčku, i když ji nepotřebujete. Můžete odstranit kód, který napodobení očekávané půjčky, ale potřebujete ID půjčky, které v Loans.json souboru neexistuje.

    Měl by se zobrazit návrh kódu podobný jednomu z následujících fragmentů kódu:

    [Fact(DisplayName = "JsonLoanRepository.GetLoan: Returns null when loan ID is not found")]
    public async Task GetLoan_ReturnsNullWhenLoanIdIsNotFound()
    {
        // Arrange
        var loanId = 999; // Use a loan ID that does not exist in the Loans.json file
        var expectedLoan = new Loan { Id = loanId, BookItemId = 101, PatronId = 202, LoanDate = DateTime.Now, DueDate = DateTime.Now.AddDays(14) };
        _mockLoanRepository.GetLoan(loanId).Returns(expectedLoan);
    
        // Act
        var actualLoan = await _jsonLoanRepository.GetLoan(loanId);
    
        // Assert
        Assert.Null(actualLoan);
    }
    
    
  23. Přijměte návrh automatického dokončování, který přiřadí loanId hodnotu, která není v sadě dat.

    Pokud žádná z návrhů nepřiřazuje loanId čísla, která nejsou v sadě dat, můžete k zobrazení dalších návrhů použít klávesovou zkratku Ctrl+Enter .

  24. Všimněte si, že testy jednotek vyžadují přístup k datovým souborům JSON.

    Metoda JsonLoanRepository.GetLoan používá JsonData objekt k načtení a ukládání dat půjčky.

    Datové soubory JSON se nacházejí ve Library.Console\Json složce. Soubor je potřeba aktualizovat UnitTests.csproj tak, aby zahrnoval tyto soubory do testovacího projektu.

  25. Do souboru přidejte následující fragment kódu UnitTests.csproj XML:

    <ItemGroup>
        <None Include="..\..\src\Library.Console\Json\**\*">
            <Link>Json\%(RecursiveDir)%(FileName)%(Extension)</Link>
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
    </ItemGroup>
    

    Tím zajistíte, že se datové soubory JSON při spuštění testů zkopírují do výstupního adresáře.

Kontrola práce

Testy jednotek pro JsonLoanRepository třídu lze spustit několika způsoby. Můžete použít Průzkumníka testů editoru Visual Studio Code, integrovaný terminál nebo dotnet test příkaz.

K dokončení této části cvičení použijte následující kroky:

  1. Ujistěte se, že máte soubor GetLoans.cs otevřený v editoru.

  2. Sestavte řešení a ujistěte se, že nedošlo k žádným chybám.

    Klikněte pravým tlačítkem myši na AccelerateDevGitHubCopilot a poté vyberte možnost Sestavit.

  3. Všimněte si tlačítka "zelené přehrávání" nalevo od testovacích metod.

  4. Otevřete zobrazení Průzkumníka testů editoru Visual Studio Code.

    Pokud chcete otevřít zobrazení Průzkumníka testů, vyberte ikonu s tvarem beaker na panelu aktivit na levé straně. Průzkumník testů je v uživatelském rozhraní označený jako Testování.

    Průzkumník testů je stromové zobrazení, které zobrazuje všechny testovací případy ve vašem pracovním prostoru. Testovací případy můžete spustit nebo ladit a zobrazit výsledky testů pomocí Průzkumníka testů.

  5. Rozbalte UnitTests a podkladové uzly a vyhledejte GetLoanTest.

  6. Spusťte testovací případ JsonLoanRepository.GetLoan: Vrací půjčku, když je nalezeno ID půjčky.

  7. Všimněte si výsledků testu v zobrazení Průzkumníka testů a Editoru.

    Měla by se zobrazit zelená značka zaškrtnutí, která značí, že test proběhl úspěšně.

  8. Pomocí Editoru spusťte JsonLoanRepository.GetLoan: Vrátí hodnotu null, pokud ID půjčky nebyl nalezen testovací případ.

  9. Všimněte si výsledků testu v zobrazení Průzkumníka testů a Editoru.

    Pokud chcete test spustit z Editoru, vyberte nalevo od testovací metody zelené tlačítko přehrát.

  10. Ujistěte se, že test JsonLoanRepository.GetLoan: Vrátí hodnotu null, pokud ID půjčky není nalezeno projde.

    Nalevo od obou testů by se měla zobrazit zelená značka zaškrtnutí.