我们是两名撰写学士论文的学生,开发了一个Windows应用程序,旨在协助餐厅进行各种通信流程。基本上,它可以从客人发送订单到服务结束期间呈现有关订单的信息。
在开发期间,我们忽略了测试,但现在决定编写单元测试。尽管如此,我们发现我们现在能够为我们的系统编写的最合适的测试是集成测试,因为我们类中的所有方法都通过LINQ to SQL绑定到SQL存储过程。我们知道可以使用存根来虚拟对数据库的依赖性,但当我们的数据库已经与所有功能一起实现时,我们认为将多个方法作为集成测试一起测试将更有价值。
如下所示的代码,我们已经尝试遵循单元测试的指南,但这是编写集成测试的正确方式吗?
在开发期间,我们忽略了测试,但现在决定编写单元测试。尽管如此,我们发现我们现在能够为我们的系统编写的最合适的测试是集成测试,因为我们类中的所有方法都通过LINQ to SQL绑定到SQL存储过程。我们知道可以使用存根来虚拟对数据库的依赖性,但当我们的数据库已经与所有功能一起实现时,我们认为将多个方法作为集成测试一起测试将更有价值。
如下所示的代码,我们已经尝试遵循单元测试的指南,但这是编写集成测试的正确方式吗?
[Test]
public void SendTotalOrder_SendAllItemsToProducer_OneSentOrder()
{
//Arrange
Order order = new Order();
Guest guest = new Guest(1, order);
Producer producer = new Producer("Thomas", "Guldborg", "Beverage producer");
DataGridView dataGridView = new DataGridView { BindingContext = new BindingContext() };
order.MenuItemId = 1;
order.Quantity = 1;
//Act
guest.AddItem();
dataGridView.DataSource = guest.SendOrderOverview();
guest.SendOrder(dataGridView);
dataGridView.DataSource = producer.OrderOverview();
var guestTableOrder = producer.OrderOverview()
.Where(orders => orders.gtid == guest.GuestTableId)
.Select(producerOrder => producerOrder.gtid)
.Single();
//Assert
Assert.That(guestTableOrder, Is.EqualTo(guest.GuestTableId));
}