C# Nunit测试命名约定示例

C# Nunit测试命名约定示例,c#,.net-core,nunit,C#,.net Core,Nunit,在开始编程时,我正在研究一些单元测试命名约定:这是一种流行的约定。 MethodName\u StateUnderTest\u预期行为 如果我有一个ParseVendorSupply类 第一个单元测试的名称是什么? FromCsv\u语法正确\u很好 第二个单元测试的名称是什么? FromCsv\u语法正确\u不正确 //Electronics store public class ParseVendorSupply { public VendorSupply FromCsv(str

在开始编程时,我正在研究一些单元测试命名约定:这是一种流行的约定。 MethodName\u StateUnderTest\u预期行为

如果我有一个ParseVendorSupply类

第一个单元测试的名称是什么? FromCsv\u语法正确\u很好

第二个单元测试的名称是什么? FromCsv\u语法正确\u不正确

//Electronics store 
public class ParseVendorSupply
{
    public VendorSupply FromCsv(string csvLine)
    {
        string[] values = csvLine.Split(',');
        VendorSupply vendorsupply = new VendorSupply();
        vendorsupply.VendorId = Convert.ToInt16(values[0]);
        vendorsupply.ProductId = Convert.ToInt16(values[1]);
        vendorsupply.Quantity = Convert.ToInt16(values[2]);
        return vendorsupply;
    }
}

public class ParseVendorSupplyTest
{

    ParseVendorSupply parseVendorSupplytest = new ParseVendorSupply();

    [Test]
    public void FromCsv_ParseCorrectly_IsGood()
    {
        string csvLineTest = "5,8,3";
        VendorSupply vendorsupply = parseVendorSupplytest.FromCsv(csvLineTest);
        Assert.AreEqual(5, vendorsupply.VendorId);
        Assert.AreEqual(8, vendorsupply.ProductId);
        Assert.AreEqual(3, vendorsupply.Quantity);
    }
    [Test]
    public void FromCsv_ParseCorrectly_IsIncorrect()
    {
        string csvLineTest = "5,testdatatype,3,testextrawords";
        VendorSupply vendorsupply = parseVendorSupplytest.FromCsv(csvLineTest);
        Assert.AreEqual(5, vendorsupply.VendorId);

    }
}

你所做的是非常好的。(我将在下面提出一个建议。)

如前所述,这里有很大的意见空间。但这让我得到了这个答案

制定一个清晰易懂的惯例,让需要理解的人理解。这就是你和任何在代码中工作的队友。没有人需要同意。但同时,想想你想要理解的“未来自我”

而且,如果你决定改变,那就去做吧。如果已使其易于理解,则不需要跨文件保持一致性。因此,不要为了保持一致性而返回并更改其他文件。不要制定规则,要创造出你个人行为的模式

关于你暂时通过的公约的一点。你似乎在让第二和第三部分是关于同一件事。如果是这样的话,它们是多余的,你不应该同时使用它们。或者,让第二个关于产生第三个结果的条件。比如说

FromCsv_WhenWellFormed_ParsesCorrectly()
FromCsv_WhenBadlyFormed_GivesError()
然而,如果是我,我可能会完全放弃第三部分,因为很明显,当数据格式正确或错误时,结果应该是什么


如果需要,可以使用不同的名称进行多个格式错误(甚至格式正确)的测试。或者,将正确和不正确的测试放入以参数形式提供数据的测试用例中。

欢迎使用堆栈溢出。由于这更多的是一个代码审查问题,而不是一个具体的编码问题,您最好在网站上提问。许多好的问题都会根据专家经验产生一定程度的意见,但对这个问题的回答往往几乎完全基于意见,而不是事实、参考资料,这里没有“正确的”,但实际上可以用