Visual Basic .NET Language
VB.NETでのユニットテスト
サーチ…
備考
これは単体テスト手順の最も単純で説明的な例です。異なるデータタイプに対してチェックする方法を自由に追加してください。
税計算の単位テスト
この例は2つの柱
- SalaryCalculationクラス :税額控除後の純給与の計算
- SalaryCalculationTestsクラス :純給与を計算するメソッドをテストするためのクラス
ステップ1:クラスライブラリを作成し、 WagesLibraryまたは適切な名前を付けます。次に、クラスの名前をSalaryCalculationに変更します
'' '' '給与計算のクラス' ''パブリッククラスSalaryCalculation
''' <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
ステップ2 :単体テストプロジェクトを作成する。作成したクラスライブラリへの参照を追加し、以下のコードを貼り付けてください
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
は期待値を実際の計算値と照合します。値0.1
は、 予想結果と実際の結果との間の許容差または変動を許容するために使用される。
従業員クラスの割り当ておよび派生プロパティのテスト
この例は単体テストでより多くのテストを利用できます。
Employee.vb (クラスライブラリ)
''' <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 (テストプロジェクト)
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
テスト実行後の結果
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow