Test Driven Development eksempel
Opret klasse med kun en konstruktor og ikke andet
Public Class Sale
Public Sub New()
End Sub
End Class
Opret test klasse ved hjælp af funktionerne i VS
<TestMethod()> _
Public Sub SaleConstructorTest()
Dim target As Sale = New Sale
Assert.Inconclusive("TODO: Implement code to verify target")
End Sub
Skriv test og tilføj eventuelle parametre og properties til klassen og se testen fejle
<TestMethod()> _
Public Sub SaleConstructorTest()
Dim Order As New Order
Order.Product = New Product() With {.Value = 10}
Order.Amount = 100
Dim target As Sale = New Sale(Order)
Assert.AreEqual(Order.Amount * Order.Product.Value, target.SaleValue)
End Sub
Public Sub New(ByVal order As Order)
End Sub
Public ReadOnly Property SaleValue() As Single?
Get
Return Nothing
End Get
End Property
Skriv kode og se testen gå godt
Public Class Sale
Public Sub New(ByVal order As Order)
If order.Product IsNot Nothing Then
_SaleValue = order.Amount * order.Product.Value
End If
End Sub
Private _SaleValue As Integer
Public ReadOnly Property SaleValue() As Single?
Get
Return _SaleValue
End Get
End Property
End Class
Opret eventuelle metoder i klassen uden parametre og indhold
Public Function SaleReport() As String
Return Nothing
End Function
Opret test metoder ved hjælp af funktionerne i VS
<TestMethod()> _
Public Sub SaleReportTest()
Dim order As Order = Nothing ' TODO: Initialize to an appropriate value
Dim target As Sale = New Sale(order) ' TODO: Initialize to an appropriate value
Dim expected As String = String.Empty ' TODO: Initialize to an appropriate value
Dim actual As String
actual = target.SaleReport
Assert.AreEqual(expected, actual)
Assert.Inconclusive("Verify the correctness of this test method.")
End Sub
Skriv test og tilføj eventuelle parametre til metoden for at kunne kompilere, men testen fejler stadig
<TestMethod()> _
Public Sub SaleReportTest()
Dim Order As New Order
Order.Product = New Product() With {.Name = "Product1", .Value = 10}
Order.Client = New Client() With {.Name = "Client1"}
Dim target As Sale = New Sale(Order) ' TODO: Initialize to an appropriate value
Dim SalesDate = New Date(2009, 2, 28)
Dim expected As String = String.Join(";", New String() {SalesDate, Order.Client.Name, Order.Product.Name, Order.Amount, Order.Product.Value, Order.Amount * Order.Product.Value})
Dim actual = target.SaleReport(SalesDate)
Assert.AreEqual(expected, actual)
End Sub
Public Function SaleReport(ByVal salesDate as Date) As String
Return Nothing
End Function
Skriv koden til metoden og se testen gå godt
Public Function SaleReport(ByVal salesDate As Date) As String
Return String.Join(";", New String() {salesDate, _Order.Client.Name, _Order.Product.Name, _Order.Amount, _Order.Product.Value, SaleValue})
End Function