gpt4 book ai didi

c# - 如何使用框架或内置功能将代码作为步骤执行?

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

我正在寻找一个框架或一种内置的方式来编写优雅的代码,这些代码易于维护,可以执行以下操作。

这是例子:

在我的主要方法中我想做三件事:

  1. 买蛋糕
  2. 锦上添花
  3. 上蛋糕

只有完成所有 3 个操作后,我才认为操作成功。如果任何一项特定操作失败,我想知道是什么失败了。

为了解决这个问题,我的主要方法最终看起来像这样:

public void IsBirthdayAsuccess()
{
var birthdayManager = new birthdayManager();

try
{
var cake = birthdayManager.BuyCake(price.cheap, quality.good, delivery.fast);
Assert.isTrue(cake.ArrivedQuick && cake.IsGood && cake.IsQuick, "Supplier didn't get the cake right");
}
catch
{
Assert.Fail("The birthday operation has failed on step 1 : Buying the cake failed");
}

try
{
birthdayManager.Cakes[0].PutIcingOn("Vanilla");
Assert.IsTrue(birthdayManager.Cakes[0].IsIced(), "Icing the cake didn't work");

}
catch
{
Assert.Fail("The birthday operation has failed on step 2 : Putting icing on the cake");
}

try
{
Party.ServeCake(birthdayManager.Cakes[0]);
Assert.IsTrue(birthdayManager.Cakes[0].IsServed(), "Cake couldn't be served");

}
catch
{
Assert.Fail("The birthday operation has failed on step 3 : Serving the cake");
}
}

现在实际上,此处的“步骤”由代码中的一系列 try/catch block 表示,但实际上在整个企业系统的其他地方。这就是为什么我正在寻找一个框架,它可以在函数内提供更一致的“步骤”框架实现。

我正在考虑推出我自己的,但也许还有其他东西存在。

如果我自己滚动它最终会是这样的:

public void TestMethod(int id)
{
var test = new test(id);

TestSteps
{
["Login to application"]
TestStep
{
test.LoginToApplication();
}
Assert, "You are not logged in"
{
test.IsLoggedIn();
}
Failure
{
Assert.Fail("Test failed on step " + testContext.TestStep.Index);
}

}

是否存在这样的框架?

编辑:同样为了重用,我将能够遍历“步骤”集合和“步骤”项,这意味着我可以使用它在 excel 或其他地方进行报告。

编辑 2:“自己动手”示例旨在替换 try/catch 和流控制的语义,C# 是否可扩展?

最佳答案

查看 SpecFlow:http://www.specflow.org/ ,这是一个很棒的基于步骤的测试框架。

关于c# - 如何使用框架或内置功能将代码作为步骤执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25767672/

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