将数据传递给nunit testcase

时间:2013-04-22 15:15:08

标签: c# nunit

如何将数据从testrunner传递给unittest?

例如主机的output pathinterface configuration

1 个答案:

答案 0 :(得分:2)

你可能已经在这一点上做了不同的路径,但我会分享这个。在2.5版本的NUnit中,实现了通过外部源驱动测试用例的能力。我使用CSV文件做了一个简单示例的演示。

CSV包含我的两个测试输入和预期结果。所以1,1,2为第一个等等。

<强> CODE

using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using NUnit.Framework;
namespace NunitDemo
{
    public class AddTwoNumbers
    {
        private int _first;
        private int _second;

        public int AddTheNumbers(int first, int second)
        {
            _first = first;
            _second = second;

            return first + second;
        }
    }

    [TestFixture]
    public class AddTwoNumbersTest 
    {

        [Test, TestCaseSource("GetMyTestData")]
        public void AddTheNumbers_TestShell(int first, int second, int expectedOutput)
        {
            AddTwoNumbers addTwo = new AddTwoNumbers();
            int actualValue = addTwo.AddTheNumbers(first, second);

            Assert.AreEqual(expectedOutput, actualValue, 
                string.Format("AddTheNumbers_TestShell failed first: {0}, second {1}", first,second));
        }

        private IEnumerable<int[]> GetMyTestData()
        {
            using (var csv = new StreamReader("test-data.csv"))
            {
                string line;
                while ((line = csv.ReadLine()) != null)
                {
                    string[] values = line.Split(',');
                    int first = int.Parse(values[0]);
                    int second = int.Parse(values[1]);
                    int expectedOutput = int.Parse(values[2]);
                    yield return new[] { first, second, expectedOutput };
                }
            }
        }
    }
}

然后,当您使用NUnit UI运行它时,它看起来像(为了示例目的,我包含了一个失败:

enter image description here