加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – TDD nUnit为一个方法多个断言

发布时间:2020-12-15 08:29:11 所属栏目:百科 来源:网络整理
导读:在我今天的生活中第一次使用TDD.我正在使用nUnit. 我有一个方法,我可以插入多个不同的输入,并检查结果是否有效. 我读到一次测试中的多个断言不是问题,我真的不想为每个输入编写新的测试. 多个断言的示例: [TestFixture]public class TestClass{ public Prog
在我今天的生活中第一次使用TDD.我正在使用nUnit.

我有一个方法,我可以插入多个不同的输入,并检查结果是否有效.

我读到一次测试中的多个断言不是问题,我真的不想为每个输入编写新的测试.

多个断言的示例:

[TestFixture]
public class TestClass
{

    public Program test;

    [SetUp]
    public void Init()
    {
        test = new Program();

    }
    [Test]
    public void Parse_SimpleValues_Calculated()
    {
        Assert.AreEqual(25,test.ParseCalculationString("5*5"));
        Assert.AreEqual(125,test.ParseCalculationString("5*5*5"));
        Assert.AreEqual(10,test.ParseCalculationString("5+5"));
        Assert.AreEqual(15,test.ParseCalculationString("5+5+5"));
        Assert.AreEqual(50,test.ParseCalculationString("5*5+5*5"));
        Assert.AreEqual(3,test.ParseCalculationString("5-1*2"));
        Assert.AreEqual(7,test.ParseCalculationString("7+1-1"));
    }
}

但是当一些东西失败时,很难读出哪个断言失败了,我的意思是如果你有很多断言,你必须通过所有断言找到正确的断言.

是否有任何优雅的方式来显示我们在断言失败时设置了什么输入,而不是结果和预期结果?

谢谢.

解决方法

I mean if you have them a lot,so you have to go through all.

不,你不 – 你只看堆栈跟踪.如果您在IDE中运行测试,我发现这很容易就可以确定哪条线路出现故障.

也就是说,有一个(明显)更好的方法 – 使用TestCaseAttribute进行参数化测试.例如:

[Test]
[TestCase("5*5",25)]
[TestCase("5*5*5",125)]
[TestCase("5+5",10)]
// etc
public void Parse_SimpleValues_Calculated(string input,int expectedOutput)
{
    Assert.AreEqual(expectedOutput,test.ParseCalculationString(input));
}

现在,您的单元测试运行器将分别向您显示每个测试用例,您将能够看到哪个失败.此外,它将运行所有测试,即使早期测试失败 – 因此您不会最终修复一个测试,只是发现下一个测试意外失败.

对于您想要单独指定输入集合的情况,还有TestCaseSourceAttribute – 例如跨多个测试使用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读