gpt4 book ai didi

c# - 如何确定哪个是 SUT,哪个是单元测试的合作者?

转载 作者:行者123 更新时间:2023-12-03 22:56:23 37 4
gpt4 key购买 nike

我正在读一本书,下面是一些代码:

[Fact]
public void Purchase_succeeds_when_enough_inventory()
{
// Arrange
var store = new Store();
store.AddInventory(Product.Shampoo, 10);
var customer = new Customer();

// Act
bool success = customer.Purchase(store, Product.Shampoo, 5);

// Assert
Assert.True(success);
Assert.Equal(5, store.GetInventory(Product.Shampoo));
}

[Fact]
public void Purchase_fails_when_not_enough_inventory()
{
// Arrange
var store = new Store();
store.AddInventory(Product.Shampoo, 10);
var customer = new Customer();

// Act
bool success = customer.Purchase(store, Product.Shampoo, 15);

// Assert
Assert.False(success);
Assert.Equal(10, store.GetInventory(Product.Shampoo));
}

作者说 客户 SUT 店铺 合作者

这里有点糊涂了,assert阶段也测试Store,那Store不也是SUT吗?

最佳答案

SUT代表 被测系统 ,这实际上意味着您对其执行操作的对象 法案 .

在断言阶段,您正在检查您的假设,其中有一个 actual和一个 expected值(value)。您正在根据预期验证实际情况。

在上面提到的代码中 Assert.Equal首先接收期望值,然后是实际值。这里的实际值(value)来自商店。
这很好,因为 Purchase 方法调用指示库存应该减少,因为已经进行了采购

幸福之路:
- 给定一个有 10 件元素的库存
- 当我购买 5 件商品时
- 然后将保留 5 个项目

不愉快的路径:
- 给定一个有 10 件元素的库存
- 当我尝试购买 15 件商品时
- 那么我的购买将失败,库存保持原样。

为了更好地强调意图,您可以像这样重写测试:

[Fact]
public void Purchase_succeeds_when_enough_inventory()
{
// Arrange
const int initialItemCount = 10;
const int intededPurchaseCount = 5;

var store = new Store();
var product = Product.Shampoo;
store.AddInventory(product, initialItemCount);
var customer = new Customer();

// Act
bool isSuccess = customer.Purchase(store, product, intededPurchaseCount );

// Assert
Assert.True(isSuccess);
var expectedInventoryCount = initialItemCount - intededPurchaseCount;
Assert.Equal(expectedInventoryCount, store.GetInventory(product));
}

[Fact]
public void Purchase_fails_when_not_enough_inventory()
{
// Arrange
const int initialItemCount = 10;
const int intededPurchaseCount = 15;

var store = new Store();
var product = Product.Shampoo;
store.AddInventory(product, initialItemCount);
var customer = new Customer();

// Act
bool isSuccess = customer.Purchase(store, product, intededPurchaseCount);

// Assert
Assert.False(isSuccess);
Assert.Equal(initialItemCount, store.GetInventory(product));
}

关于c# - 如何确定哪个是 SUT,哪个是单元测试的合作者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61361174/

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