Visual Basic .NET Language
Test d'unité dans VB.NET
Recherche…
Remarques
Ceci est l'exemple le plus simple mais descriptif pour la procédure de test unitaire. N'hésitez pas à ajouter d'autres méthodes pour vérifier les différents types de données.
Test unitaire pour le calcul de la taxe
Cet exemple est divisé en deux piliers
- Classe de calcul de salaire: Calcul du salaire net après déduction fiscale
- Classe SalaryCalculationTests : Pour tester la méthode qui calcule le salaire net
Étape 1: Créer une bibliothèque de classes, nommez-la WagesLibrary ou un nom approprié. Puis renommez la classe en SalaryCalculation
'' '' '' Class for Salary Calculations '' 'Classe publique SalaireCalculation
''' <summary>
''' Employee Salary
''' </summary>
Public Shared Salary As Double
''' <summary>
''' Tax fraction (0-1)
''' </summary>
Public Shared Tax As Double
''' <summary>
''' Function to calculate Net Salary
''' </summary>
''' <returns></returns>
Public Shared Function CalculateNetSalary()
Return Salary - Salary * Tax
End Function
End Class
Étape 2 : Créer un projet de test unitaire. Ajouter une référence à la bibliothèque de classes créée et coller le code ci-dessous
Imports WagesLibrary 'Class library you want to test
''' <summary>
''' Test class for testing SalaryCalculation
''' </summary>
<TestClass()> Public Class SalaryCalculationTests
''' <summary>
''' Test case for the method CalculateNetSalary
''' </summary>
<TestMethod()> Public Sub CalculateNetSalaryTest()
SalaryCalculation.Salary = 100
SalaryCalculation.Tax = 0.1
Assert.AreEqual(90.0, SalaryCalculation.CalculateNetSalary(), 0.1)
End Sub
End Class
Assert.Equal
vérifie la valeur attendue par rapport à la valeur calculée réelle. la valeur 0.1
est utilisée pour permettre la tolérance ou la variation entre le résultat attendu et le résultat réel .
Étape 3: Exécuter le test de la méthode pour voir le résultat
Test de la classe d'employé affecté et dérivé
Cet exemple a plus de tests disponibles dans les tests unitaires.
Employee.vb (bibliothèque de classes)
''' <summary>
''' Employee Class
''' </summary>
Public Class Employee
''' <summary>
''' First name of employee
''' </summary>
Public Property FirstName As String = ""
''' <summary>
''' Last name of employee
''' </summary>
Public Property LastName As String = ""
''' <summary>
''' Full name of employee
''' </summary>
Public ReadOnly Property FullName As String = ""
''' <summary>
''' Employee's age
''' </summary>
Public Property Age As Byte
''' <summary>
''' Instantiate new instance of employee
''' </summary>
''' <param name="firstName">Employee first name</param>
''' <param name="lastName">Employee last name</param>
Public Sub New(firstName As String, lastName As String, dateofbirth As Date)
Me.FirstName = firstName
Me.LastName = lastName
FullName = Me.FirstName + " " + Me.LastName
Age = Convert.ToByte(Date.Now.Year - dateofbirth.Year)
End Sub
End Class
EmployeeTest.vb (projet de test)
Imports HumanResources
<TestClass()>
Public Class EmployeeTests
ReadOnly _person1 As New Employee("Waleed", "El-Badry", New DateTime(1980, 8, 22))
ReadOnly _person2 As New Employee("Waleed", "El-Badry", New DateTime(1980, 8, 22))
<TestMethod>
Public Sub TestFirstName()
Assert.AreEqual("Waleed", _person1.FirstName, "First Name Mismatch")
End Sub
<TestMethod>
Public Sub TestLastName()
Assert.AreNotEqual("", _person1.LastName, "No Last Name Inserted!")
End Sub
<TestMethod>
Public Sub TestFullName()
Assert.AreEqual("Waleed El-Badry", _person1.FullName, "Error in concatination of names")
End Sub
<TestMethod>
Public Sub TestAge()
Assert.Fail("Age is not even tested !") 'Force test to fail !
Assert.AreEqual(Convert.ToByte(36), _person1.Age)
End Sub
<TestMethod>
Public Sub TestObjectReference()
Assert.AreSame(_person1.FullName, _person2.FullName, "Different objects with same data")
End Sub
End Class
Résultat après exécution des tests