Kako napisati teste enot v C# za boljšo kakovost kode

Kako Napisati Teste Enot V C Za Boljso Kakovost Kode



Ko večina od nas začenja kot razvijalci, skorajda ne razmišljamo ali posvečamo veliko časa testiranju enot. Vendar, ko pridete v bolj zapleteno okolje repozitorija v skupni rabi, postane vse bolj nujno, da preizkusite kodo, preden jo uvedete v proizvodnjo.

Zato je bistvenega pomena, da zgodaj v razvojnih fazah pridobite osnove testiranja enot, da se izognete krivulji učenja pri delu z obsežnimi bazami kod.

V tej vadnici vam bomo predstavili okvir testiranja enot z uporabo C# in testne knjižnice MSTest. Zgradili bomo osnovno aplikacijo, ki vam bo omogočila, da se naučite, kako ustvariti enotne teste, kako jih izvajati in kako interpretirati rezultate neuspešnega ali uspešnega testa.







Testno okolje

Začnimo z razpravo o preskusni rešitvi in ​​o tem, kako konfigurirati našo osnovno aplikacijo.



Če želite slediti in posnemati aplikacijo v tej vadnici, zagotovite, da imate naslednje:



  1. Nameščen Visual Studio
  2. Konfigurirana orodja .NET in C# na vašem računalniku

Ustvari aplikacijo

Nato odprite Visual Studio in ustvarite novo rešitev. Za to vadnico bomo zgradili osnovno aplikacijo za kalkulator. Aplikaciji lahko daste poljubno ime.





Nato ustvarite nov projekt in izberite vrsto projekta MSTest Test Project ter mu dajte poljubno ime.



Prepričajte se, da ste izbrali »Dodaj v rešitev« in izberite predhodno ustvarjeno aplikacijo.

Morali bi imeti glavno aplikacijo in projekt testiranja enote, kot je prikazano v raziskovalcu rešitev.

Napišite kodo za aplikacijo Kalkulator

Naslednji korak je pisanje kode za našo aplikacijo kalkulator. To lahko naredimo v datoteki CalcApp »program.cs«.

Ker iščemo osnovno funkcionalnost, lahko izvorno kodo dodamo na naslednji način:

kalkulator javnega razreda
{
javnosti dvojno Dodaj ( dvojno a , dvojno b )
{
vrnitev a + b ;
}

javnosti dvojno Odštej ( dvojno a , dvojno b )
{
vrnitev a - b ;
}

javnosti dvojno Pomnožite ( dvojno a , dvojno b )
{
vrnitev a * b ;
}

javnosti dvojno Razdeli ( dvojno a , dvojno b )
{
če ( b == 0 )
vrže novo izjemo DivideByZeroException ( ) ;
vrnitev a / b ;
}
}

Kot lahko ugibate, prejšnja koda ustvari aplikacijo za računanje, ki lahko izvaja osnovne aritmetične aplikacije.

Napišite teste enot

Ko končamo, lahko napišemo teste enot za razred 'Kalkulator'. V tem primeru je vse, kar moramo storiti, napisati teste v datoteko »UnitTest« projekta, kot sledi:

z uporabo sistema ;

imenski prostor CalcApp
{
kalkulator javnega razreda
{
javnosti dvojno Dodaj ( dvojno a , dvojno b )
{
vrnitev a + b ;
}

javnosti dvojno Odštej ( dvojno a , dvojno b )
{
vrnitev a - b ;
}

javnosti dvojno Pomnožite ( dvojno a , dvojno b )
{
vrnitev a * b ;
}

javnosti dvojno Razdeli ( dvojno a , dvojno b )
{
če ( b == 0 )
vrže novo izjemo DivideByZeroException ( ) ;
vrnitev a / b ;
}
}
}

imenski prostor CalcTest
{
[ TestClass ]
javni razred CalculatorTests
{
privatni kalkulator kalkulator ;

[ TestInitialize ]
javnosti praznina Nastaviti ( )
{
kalkulator = nov kalkulator ( ) ;
}

[ TestMethod ]
javnosti praznina Add_TwoPositiveNumbers_ReturnsCorrectSum ( )
{
je bil rezultat = kalkulator. Dodaj ( 5 , 5 ) ;
Trdi. AreEqual ( 10 , rezultat ) ;
}

[ TestMethod ]
javnosti praznina Subtract_TwoPositiveNumbers_ReturnsCorrectDifference ( )
{
je bil rezultat = kalkulator. Odštej ( 10 , 5 ) ;
Trdi. AreEqual ( 5 , rezultat ) ;
}

[ TestMethod ]
javnosti praznina Pomnoži_dve pozitivni števili_vrne pravilen izdelek ( )
{
je bil rezultat = kalkulator. Pomnožite ( 5 , 5 ) ;
Trdi. AreEqual ( 25 , rezultat ) ;
}

[ TestMethod ]
[ ExpectedException ( tip ( DivideByZeroException ) ) ]
javnosti praznina Divide_DenominatorIsZero_ThrowsDivideByZeroException ( )
{
je bil rezultat = kalkulator. Razdeli ( 5 , 0 ) ;
}

[ TestMethod ]
javnosti praznina Deljenje_dve pozitivni števili_vrne pravilni količnik ( )
{
je bil rezultat = kalkulator. Razdeli ( 10 , 5 ) ;
Trdi. AreEqual ( 2 , rezultat ) ;
}
}
}

Zaključek

To je osnovna vadnica, ki pokriva osnove testiranja enot v C# z uporabo ogrodja MSTest.