gpt4 book ai didi

c# - 代码应该进行单元测试还是集成测试

转载 作者:太空宇宙 更新时间:2023-11-03 10:54:16 24 4
gpt4 key购买 nike

首先,我是测试新手,所以这可能是个愚蠢的问题。我目前正在为我的类(class)创建单元测试。我有一个属性,它根据可为空的属性向数据库发送一个新的 Comment 对象。通常在单元测试中,我只是确保一个对象被发送到我的模拟服务,并称它为好。但是,测试 Comment 对象上的值以确保它沿着正确的路径前进,而不是仅仅假设它是正确的,这不是更有意义吗?这是我正在测试的代码示例:

if (DeliveryDate != null)
{
AddPartHistory("Delivery Date Changed from " + ((DateTime)DeliveryDate).ToShortDateString() + " to " + ((DateTime)value).ToShortDateString());
}
else
{
AddPartHistory("Delivered Date of " + ((DateTime)value).ToShortDateString() + " was added.");
}

AddPartHistory 函数将 Comment 对象(它在名为 Entry 的 Property 中保存文本)发送到数据库(或在测试期间发送到 Mock Service),并将其存储在名为 新零件历史。这是我认为可能更像是集成测试的代码:

vm.DeliveryDate = DateTime.UtcNow;
Assert.AreEqual("Delivered Date of " + ((DateTime)vm.DeliveryDate).ToShortDateString() + " was added.", vm.NewPartHistory.Entry);

OldDeliveryDate = vm.DeliveryDate;
vm.DeliveryDate = DateTime.UtcNow;
Assert.AreEqual("Delivery Date Changed from " + ((DateTime)OldDeliveryDate).ToShortDateString() + " to " + ((DateTime)vm.DeliveryDate).ToShortDateString(), vm.NewPartHistory.Entry);

所以,回到问题,我应该将这段代码留在单元测试中,还是转到集成测试中。

更新:

因为关于我的 AddPartHistory 方法的讨论很多,所以在这里。它只是为 PartHistory(始终相同)填写标准数据,添加条目,然后用新数据更新 Listview:

private void AddPartHistory(string historyText)
{
NewPartHistory = new CdaService.PartHistory();
NewPartHistory.EnteredBy = User.Current.UID;
NewPartHistory.Entry = historyText;
NewPartHistory.EntryDate = DateTime.UtcNow;
NewPartHistory.PartId = ThisPart.Id;
webService.Insert(NewPartHistory);
GetPartHistory();
}

最佳答案

我会将其更改为将新的 Comment 对象传递给 AddPartHistory 方法,而不是将值传递给它来构建对象。这样您就可以对逻辑进行单元测试,包括评论对象的构造。从 AddPartHistory 返回评论对象以使其更容易断言也很有帮助。

像这样将其移出方法:

   NewPartHistory = new CdaService.PartHistory();
NewPartHistory.EnteredBy = User.Current.UID;
NewPartHistory.EntryDate = DateTime.UtcNow;
NewPartHistory.PartId = ThisPart.Id;

if()
{
NewPartHistory.Entry = "Delivered Date of"......;
return AddPartHistory(NewPartHistory );
}
else
{
NewPartHistory.Entry = "Delivery Date Changed from".....;
return AddPartHistory(NewPartHistory );
}

//return comment object from AddPartHistory so that you can call this entire method and assert all properties

关于c# - 代码应该进行单元测试还是集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20084586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com