Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez az oktatóanyag egy interaktív felületen mutatja be, hogyan hozhat létre lépésről lépésre egy mintamegoldást az egységtesztelési fogalmak megismeréséhez. Ha inkább egy előre elkészített megoldással szeretné követni az oktatóanyagot, a kezdés előtt megtekintheti vagy letöltheti a mintakódot. A letöltési utasításokért tekintse meg példákat és oktatóanyagokat.
Ez a cikk egy .NET Core-projekt teszteléséről szól. Ha egy ASP.NET Core-projektet tesztel, olvassa el az ASP.NET Core Integrációs tesztekfejezetet.
Előfeltételek
- .NET 8 SDK vagy újabb verziók.
- Az Ön által választott szöveg- vagy kódszerkesztő.
A forrásprojekt létrehozása
Nyisson meg egy parancssor ablakot. Hozzon létre egy unit-testing-vb-nunit nevű könyvtárat a megoldás tárolásához. Az új könyvtárban futtassa a következő parancsot egy új megoldásfájl létrehozásához az osztálytárhoz és a tesztprojekthez:
dotnet new sln
Ezután hozzon létre egy PrimeService könyvtárat. Az alábbi ábra az eddigi fájlstruktúrát mutatja be:
/unit-testing-vb-nunit
unit-testing-vb-nunit.sln
/PrimeService
Állítsa be a PrimeService-et aktuális könyvtárként, és futtassa a következő parancsot a forrásprojekt létrehozásához:
dotnet new classlib -lang VB
Nevezze át a(z) Class1.VB elemet PrimeService.VBnévre. A PrimeService osztály sikertelen implementációját hozza létre:
Namespace Prime.Services
Public Class PrimeService
Public Function IsPrime(candidate As Integer) As Boolean
Throw New NotImplementedException("Please create a test first.")
End Function
End Class
End Namespace
Változtassa vissza a könyvtárat a unit-testing-vb-using-mstest könyvtárra. Futtassa a következő parancsot az osztálytárprojekt megoldáshoz való hozzáadásához:
dotnet sln add .\PrimeService\PrimeService.vbproj
A tesztprojekt létrehozása
Ezután hozza létre a PrimeService.Tests könyvtárat. Az alábbi ábra a könyvtárszerkezetet mutatja be:
/unit-testing-vb-nunit
unit-testing-vb-nunit.sln
/PrimeService
Source Files
PrimeService.vbproj
/PrimeService.Tests
Állítsa a PrimeService.Tests könyvtárat aktuális munkakönyvtárnak az alábbi parancs segítségével, és hozzon létre egy új projektet:
dotnet new nunit -lang VB
A dotnet new parancs egy tesztprojektet hoz létre, amely az NUnitot használja tesztelési könyvtárként. A létrehozott sablon konfigurálja a tesztfuttatót a PrimeServiceTests.vbproj fájlban:
<ItemGroup>
<PackageReference Include="nunit" Version="4.4.0" />
<PackageReference Include="NUnit3TestAdapter" Version="5.2.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
</ItemGroup>
Megjegyzés:
A .NET 9 előtt a létrehozott kód hivatkozhat az NUnit-teszt keretrendszer régebbi verzióira. A csomagok frissítéséhez használhatja dotnet CLI. Másik lehetőségként nyissa meg a PrimeService.Tests.vbproj fájlt, és cserélje le a csomaghivatkozások elemcsoportjának tartalmát a fenti kódra.
A tesztprojekthez más csomagokra van szükség az egységtesztek létrehozásához és futtatásához.
dotnet new az előző lépésben hozzáadta az NUnit és az NUnit tesztadaptert. Most adja hozzá a PrimeService osztálytárat egy másik függőségként a projekthez. Használja a dotnet reference add parancsot:
dotnet reference add ../PrimeService/PrimeService.vbproj
A teljes fájl a GitHub
A következő végső megoldáselrendezést kell követnie:
/unit-testing-vb-nunit
unit-testing-vb-nunit.sln
/PrimeService
Source Files
PrimeService.vbproj
/PrimeService.Tests
Test Source Files
PrimeService.Tests.vbproj
Hajtsa végre a következő parancsot a unit-testing-vb-nunit könyvtárban:
dotnet sln add .\PrimeService.Tests\PrimeService.Tests.vbproj
Az első teszt létrehozása
Írsz egy sikertelen tesztet, sikerre viszed, majd megismétled a folyamatot. A PrimeService.Tests könyvtárban nevezze át a UnitTest1.vb fájlt PrimeService_IsPrimeShould.VB , és cserélje le a teljes tartalmát a következő kódra:
Imports NUnit.Framework
Namespace PrimeService.Tests
<TestFixture>
Public Class PrimeService_IsPrimeShould
Private _primeService As Prime.Services.PrimeService = New Prime.Services.PrimeService()
<Test>
Sub IsPrime_InputIs1_ReturnFalse()
Dim result As Boolean = _primeService.IsPrime(1)
Assert.That(result, [Is].False, $"1 should not be prime")
End Sub
End Class
End Namespace
A <TestFixture> attribútum egy teszteket tartalmazó osztályt jelöl. A <Test> attribútum a tesztfuttató által futtatott metódust jelöli. A unit-testing-vb-nunit fájlból hajtsa végre dotnet test a teszteket és az osztálytárat, majd futtassa a teszteket. Az NUnit-tesztfuttató tartalmazza a tesztek futtatásához a program belépési pontját.
dotnet test elindítja a tesztfuttatót a létrehozott egységteszt-projekt használatával.
A teszt sikertelen. Még nem hoztad létre az implementációt. Ezt a tesztet úgy teheti meg, hogy a legegyszerűbb kódot írja be a PrimeService osztályba, amely működik:
Public Function IsPrime(candidate As Integer) As Boolean
If candidate = 1 Then
Return False
End If
Throw New NotImplementedException("Please create a test first.")
End Function
A unit-testing-vb-nunit könyvtárban futtassa újra a dotnet test-t. A dotnet test parancs egy buildet futtat a PrimeService projekthez, majd a PrimeService.Tests projekthez. Mindkét projekt létrehozása után ezt az egyetlen tesztet futtatja. Átmegy.
További funkciók hozzáadása
Most, hogy teljesített egy teszteredményt, ideje többet írni. A prímszámoknak van még néhány egyszerű esete: 0, -1. Ezeket az eseteket új tesztként is hozzáadhatja a <Test> attribútummal, de ez gyorsan fárasztóvá válik. Vannak más xUnit-attribútumok is, amelyek lehetővé teszik, hogy hasonló tesztcsomagot írjon. Az <TestCase> attribútum olyan tesztcsomagot jelöl, amely ugyanazt a kódot hajtja végre, de különböző bemeneti argumentumokkal rendelkezik. Az attribútummal <TestCase> megadhat értékeket ezekhez a bemenetekhez.
Új tesztek létrehozása helyett alkalmazza ezt a két attribútumot egy olyan tesztsorozat létrehozására, amelyek több, kettőnél kisebb értéket tesztelnek, ami a legalacsonyabb prímszám:
<TestFixture>
Public Class PrimeService_IsPrimeShould
Private _primeService As Prime.Services.PrimeService = New Prime.Services.PrimeService()
<TestCase(-1)>
<TestCase(0)>
<TestCase(1)>
Sub IsPrime_ValuesLessThan2_ReturnFalse(value As Integer)
Dim result As Boolean = _primeService.IsPrime(value)
Assert.That(result, [Is].False, $"{value} should not be prime")
End Sub
<TestCase(2)>
<TestCase(3)>
<TestCase(5)>
<TestCase(7)>
Public Sub IsPrime_PrimesLessThan10_ReturnTrue(value As Integer)
Dim result As Boolean = _primeService.IsPrime(value)
Assert.That(result, [Is].True, $"{value} should be prime")
End Sub
<TestCase(4)>
<TestCase(6)>
<TestCase(8)>
<TestCase(9)>
Public Sub IsPrime_NonPrimesLessThan10_ReturnFalse(value As Integer)
Dim result As Boolean = _primeService.IsPrime(value)
Assert.That(result, [Is].False, $"{value} should not be prime")
End Sub
End Class
Futtassa dotnet test, és a tesztek közül kettő elbukik. Az összes teszt sikeressé tétele érdekében módosítsa a if záradékot a Main metódus elején a PrimeServices.cs fájlban:
if candidate < 2
Folytassa az iterációt úgy, hogy további teszteket, több elméletet és további kódot ad hozzá a fő kódtárhoz. Önnek van a tesztek
Létrehozott egy kis könyvtárat és egy készletnyi egységtesztet a könyvtárhoz. A megoldást úgy strukturálta, hogy az új csomagok és tesztek hozzáadása a normál munkafolyamat része legyen. A legtöbb időt és erőfeszítést az alkalmazás céljainak megoldására összpontosította.