Jak založit projekt s testy

Místo AAA používejte jméno projektu, který chcete vytvořit.

Z příkazové řádky (terminál ve VS Code)

  1. Vytvořit solution (seskupení více projektů – implementace a testy): dotnet new sln
  2. Vytvořit projekt s implementací: dotnet new classlib -o AAA (-o nastaví output folder, classlib = knihovna, nebudu ten kód spouštět přímo)
  3. Přidat projekt s implementací do solution: dotnet sln add AAA/AAA.csproj
  4. Vytvořit projekt s testy (my používáme xUnit): dotnet new xunit -o AAA.Tests
  5. Přidat projekt s testy do solution: dotnet sln add AAA.Tests/AAA.Tests.csproj
  6. Propojit implementaci s testy (přidat ji jako referenci): dotnet add AAA.Tests/AAA.Tests.csproj reference AAA/AAA.csproj
  7. Přidat using AAA; do testů
  8. Spustit testy: dotnet test

Visual Studio

  1. Vytvořte nový projekt s implementací (v našem případě vyberte template Class Library), tentokrát nezaškrtávejte Place solution and project in the same directory. Solution se vytvoří automaticky.
  2. Projekt s testy jde přidat třeba kliknutím pravým tlačítkem na Solution (v okně Solution Explorer) a následně Add Project. Pak vyberte template testového projektu (v našem případě xUnit Test Project). Doporučuji ho pojmenovat AAA.Tests.
  3. Propojte implementaci s testy. V Solution Explorer klikněte pravým tlačítkem na Dependencies u projektu s testy. Pak zvolte možnost Add Project Reference a vyberte projekt s implementací.
  4. Přidejte using AAA; do testů

Dostupnost internal položek

Občas se hodí mít z testů přístup k metodám a datovým položkám, které ale nechcete mít úplně veřejné (public), aby nebyly dostupné koncovým uživatelům. Na to se dá použít modifikátor přístupu internal, který znamená, že položky jsou viditelné pouze z daného projektu. Tyto položky se dají zpřístupnit také pro jiné projekty, pokud známe jejich jméno (což v případě testů známe).

Stačí přidat

using System.Runtime.CompilerServices;

[assembly:InternalsVisibleTo("AAA.Tests")]
namespace AAA;
na začátek souboru s implementací (řádek namespace ... už tam byl). "AAA.Tests" je jméno projektu s testy.

Úlohy na procvičení

Systém pro správu knih v knihovně

Navrhněte a implementujte jednoduchý systém správy knihovny. Systém by měl spravovat výpůjčky a vrácení knih. Systém bude sledovat, které knihy jsou dostupné a které jsou aktuálně vypůjčené. Zahrňte funkce pro vypůjčení knihy držiteli knihovního průkazu a zpracování vrácení knih. Předpokládejte, že každá kniha a držitel průkazu má jedinečný identifikátor. Systém by měl umožňovat přidání nových knih do knihovny a registraci nových držitelů průkazů.

Nejprve navrhněte dekompozici problému do tříd.

Poté systém implementujeme pomocí přístupu test-driven development.

Učební výstupy

Učební výstupy podávají zhuštěný souhrn základních konceptů a dovedností, které byste měli umět vysvětlit a/nebo použít po každém cvičení.

  • chápat význam testů pro ověření funkčnosti programu
  • umět napsat testy v C# pomocí vhodného frameworku (např. xUnit, MSTest)
  • umět spustit existující unit testy a z výstupu poznat, které testy prošly a které ne