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)
- Vytvořit solution (seskupení více projektů – implementace a testy):
dotnet new sln
- 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) - Přidat projekt s implementací do solution:
dotnet sln add AAA/AAA.csproj
- Vytvořit projekt s testy (my používáme xUnit):
dotnet new xunit -o AAA.Tests
- Přidat projekt s testy do solution:
dotnet sln add AAA.Tests/AAA.Tests.csproj
- Propojit implementaci s testy (přidat ji jako referenci):
dotnet add AAA.Tests/AAA.Tests.csproj reference AAA/AAA.csproj
- Přidat
using AAA;
do testů - Spustit testy:
dotnet test
Visual Studio
- 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.
- 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
. - 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í.
- 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;
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í.