首先,对标题表示歉意,我想不出最简单的解释方法!
我有一个要为其编写单元测试的方法。我将使其保持相当通用,因为我不想讨论该方法的实现,而只是讨论它的测试。方法是:
public void HandleItem(item a)
{
CreateNewItem();
UpdateStatusOnPreviousItem();
SetNextRunDate();
}
因此,此类有一个公共方法,然后调用一些私有方法来执行逻辑。
因此,在编写单元测试时,我想检查所有三件事。因为它们都在同一运行中被调用,所以我认为我可以将其作为一项测试:
public void GivenItem_WhenRun_Thenxxxxx
{
HandleItem(item);
// Assert item has been created
// Assert status has been set on the previous item
// Assert run date has been set
}
但我认为我也可以将其编写为三个单独的测试:
public void GivenItem_WhenRun_ThenItemIsCreated()
{
HandleItem(item);
}
public void GivenItem_WhenRun_ThenStatusIsUpdatedOnPreviousItem()
{
HandleItem(item);
}
public void GivenItem_WhenRun_ThenRunDateIsSet()
{
HandleItem(item);
}
因此,对我来说,这似乎更好,因为它本质上是列出要求,但随后这三个都相关,并且确实需要在测试方法上执行完全相同的工作,因此,将相同的代码运行3次。
是否有建议的方法来处理?
谢谢