- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在读一本书,下面是一些代码:
[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
代表 被测系统 ,这实际上意味着您对其执行操作的对象 法案 .
在断言阶段,您正在检查您的假设,其中有一个 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/
我读过 Mark Seeman 的 article on auto-mocking我现在正在根据那篇文章编写一个可重复使用的 windsor 容器。 我对Mark文章的实现(基本直接照抄) 主要工作在
我正在读一本书,下面是一些代码: [Fact] public void Purchase_succeeds_when_enough_inventory() { // Arrange v
我对测试要求有疑问。 举个例子: Class Article { public void deactive() {//some behaviour, which deactives artic
我的问题是关于单元测试的。假设我们有以下类(class); class X { public function p1(){ //logic $a = $this->
我看到很多人在谈论 SUT 这个术语,但不明白他们为什么使用这个术语。 SUT 是你要测试的吗? 这个词从何而来,是什么意思? 例如在这个测试中,我的 SUT 是什么? [TestMethod] pu
有时我会想 mock 被测对象本身,我知道这看起来很奇怪。 这是示例。我使用 C#,但这没关系。想象一下,你有一个类管理一些集合。它有方法 public void Insert(int positio
我有一个 typescript 类: export class SystemUnderTest { @LogThisAction('sth was done') public doSometh
我正在寻找一种方法来获取测试中列表的值,我的 SUT 中有这个结构: .//... A run method with logic that call this: private void buys
我有一个这样的系统 class Sut { IRepository _repo; public Sut(IRepository repo) { _repo = repo; }
有谁知道如何模拟 Puppeteer 在用作被测系统的一部分时发出的网络请求(但不运行测试)?例如,被测系统使用 puppeteer 来获取 URL 并返回有关页面的一些信息。该测试使用 Jest 运
我知道有重复的内容,但那里没有给出有关实际问题的答案。 How to verify if method is called on System under test (not a mock) 我有一个
我有像下面这样的类方法,它创建一个本地对象并调用该本地对象的方法。 public class MyClass { public someReturn myMethod(){ M
我讨厌将单元测试引入遗留代码库,但我不得不这样做。 到目前为止,我使用 Mockito 和 PowerMock 成功地将单元测试引入了遗留代码库。在我遇到这种情况之前工作得很好: 在 SUT 中,有几
假设我们正在使用 TDD 实现一个 Stack 类,我们需要为 Stack 类的每一位功能添加一个新测试来执行它: [TestMethod] public void Should_Be_Empty_A
我曾看到开发人员使用 Spring 的 @Autowired 特性,让 Spring 框架负责在测试类或夹具中实例化和注入(inject) SUT(被测系统)或 CUT(被测类)。以下是显示在测试夹具
考虑以下测试, [Theory, MyConventions] public void GetClientExtensionReturnsCorrectValue(BuilderStrategy su
我是一名优秀的程序员,十分优秀!