Подтвердить что ты не робот

Настроить тестовый метод с различными входами

Я хочу протестировать следующий метод в С# для всех путей кода.

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

Я видел это pex unit testing, где тестируются несколько входов. Как я могу создать unit test, который принимает несколько входов?

[TestMethod()] //some setup here??
    public void fooTest()
    {
         //some assert
    }

Я хочу избежать создания метода тестирования для каждого ввода. Я работаю с Visual Studio 2010/2012 и .Net 4.0

4b9b3361

Ответ 1

Вы можете использовать XML-тест, базу данных или CSV-данные MS Test. Создать FooTestData.xml:

<?xml version="1.0" encoding="utf-8" ?>
<Rows>
  <Row><Data>1</Data></Row>
  <Row><Data>2</Data></Row>
</Rows>

И установите его как источник данных для вашего теста:

[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 с фреймворком NUnit он легче сочетается - вы можете использовать атрибут TestCase для предоставления тестовых данных:

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