Hier ist mein Code:Wie erstellt man Einheitentest (inkl. Datenbank) in Visual Studio 2017?
public partial class ActivityService
{
public SearchActivityOutput GetActivityFromDbByName(SearchActivityInput input)
{
using (var conn = DbService.GetInstance().GetOpenConnection())
{
var savedActivities = GetSearchResultByNameQuery.GetInstance()
.Execute(conn, new { Name = input.Name });
var activityList = savedActivities.Select(a => new ActivityDetail()
{
Name = a.Name,
City = a.City,
Country = a.Country,
Description = a.Description,
OperationTime = a.OperationTime,
Price = a.Price
}).ToList();
var output = new SearchActivityOutput
{
ActivityList = activityList
};
return output;
}
}
}
Wie kann ich Unit-Test von dieser Klasse zu erstellen?
meine Probe Unit-Test für diese Klasse:
[TestMethod()]
public void GetActivityFromDbByNameTest()
{
Initializer.Init();
var input = new SearchActivityInput { Name = "Marjan" };
var ActList1 = new ActivityDetail()
{ Name = "Marjan", City = "Bandung", Country = "Indonesia", Description = "coba", OperationTime = "24 Jam", Price = 2000};
var ActList2 = new ActivityDetail()
{ Name = "Marjan", City = "Bandung", Country = "Indonesia", Description = "coba", OperationTime = "24 Jam", Price = 3500 };
var ActList3 = new ActivityDetail()
{ Name = "Marjan aja", City = "Jakarta", Country = "Indonesia", Description = "apapun", OperationTime = "2 Hari", Price = 4500 };
var ActList4 = new ActivityDetail()
{ Name = "Marjan", City = "Stockholm", Country = "Swedia", Description = "123coba", OperationTime = "3 Jam", Price = 3500 };
var ActList5 = new ActivityDetail()
{ Name = "Marjan", City = "Stockholm", Country = "Swedia", Description = "123coba", OperationTime = "3 Jam", Price = 4500 };
var ActList6 = new ActivityDetail()
{ Name = "Marjan aja", City = "Jakarta", Country = "Indonesia", Description = "apapun", OperationTime = "2 Hari", Price = 2000 };
var ActList7 = new ActivityDetail()
{ Name = "Marjan", City = "Stockholm", Country = "Swedia", Description = "123coba", OperationTime = "3 Jam", Price = 3500 };
var ActList8 = new ActivityDetail()
{ Name = "Marjan", City = "Stockholm", Country = "Swedia", Description = "123coba", OperationTime = "3 Jam", Price = 2000 };
var ActList9 = new ActivityDetail()
{ Name = "Marjan", City = "Stockholm", Country = "Swedia", Description = "123coba", OperationTime = "3 Jam", Price = 2000 };
var ActList = new List<ActivityDetail>();
ActList.Add(ActList1);
ActList.Add(ActList2);
ActList.Add(ActList3);
ActList.Add(ActList4);
ActList.Add(ActList5);
ActList.Add(ActList6);
ActList.Add(ActList7);
ActList.Add(ActList8);
ActList.Add(ActList9);
var expectedResult = new SearchActivityOutput
{
ActivityList = ActList
};
using (var conn = DbService.GetInstance().GetOpenConnection())
{
var actualResult = ActivityService.GetInstance().GetActivityFromDbByName(input);
Assert.AreEqual(expectedResult, actualResult);
}
}
aber, wenn ich das Gerät Test ausführen, gibt es einige Fehlermeldung geben:
Testname: GetActivityFromDbByNameTest-Test
Ergebnis StackTrace: um xxxx.ActivityServiceTests.GetActivityFromDbByNameTest() in
70 Ergebnismeldung: Assert.AreEqual ist fehlgeschlagen. Erwartet: (xxx.yyy.zzz.Model.SearchActivityOutput). Tatsächlich: (xxx.yyy.zzz.Model.SearchActivityOutput).
Haben Sie den Test getestet, um zu sehen, warum er fehlgeschlagen ist? Sie tun 'Assert.AreEqual (expectedResult, actualResult)', aber diese sind nicht gleich. Halten Sie einen Haltepunkt in dieser Zeile und debuggen Sie durch, um zu sehen, wo sich der tatsächliche Wert von dem unterscheidet, was Sie erwarten. – Stuart
@Stuart Wie halte ich einen Haltepunkt? Ich habe den Haltepunkt gesetzt, aber wenn ich den Komponententest starte, bricht das Programm nicht beim Haltepunkt ab. –
Sie müssen den Test debuggen, den Test nicht ausführen. Setzen Sie also einen Breakpoint auf den Test in der Assert-Zeile, klicken Sie dann mit der rechten Maustaste auf test und wählen Sie debug. – Stuart