Set Up Test Method with different inputs

前端 未结 3 1319
佛祖请我去吃肉
佛祖请我去吃肉 2021-02-08 01:45

I want to test the following method in C# for all code paths.

public int foo (int x)
{
    if(x == 1)
        return 1;
    if(x==2)
        return 2;
    else
          


        
3条回答
  •  星月不相逢
    2021-02-08 02:21

    You can use XML, Database, or CSV datasources MS Test. Create FooTestData.xml:

    
    
      1
      2
    
    

    And set it as datasource for your test:

    [TestMethod]
    [DeploymentItem("ProjectName\\FooTestData.xml")]
    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML",
                       "|DataDirectory|\\FooTestData.xml", "Row",
                        DataAccessMethod.Sequential)]
    public void FooTest()
    {
        int x = Int32.Parse((string)TestContext.DataRow["Data"]);
        // some assert
    }
    

    BTW with NUnit framework it's match easier - you can use TestCase attribute to provide test data:

    [TestCase(1)]
    [TestCase(2)]
    public void FooTest(int x)
    {
       // some assert
    }
    

提交回复
热议问题