2013-08-12 2 views
1

У меня есть два тестовых примера в xml.i я использую vs 2010 для модульного тестирования с использованием C# .i создали один тестовый метод, который используется над XML-файлом, чтобы прочитать значения.модульное тестирование в Vs 2010

Здесь мой вопрос в том, что первый тестовый случай получил отказ. Как запустить следующий тестовый пример в то же время. Есть ли какой-либо способ, из-за которого количество тестовых окон не получилось или прошло за один проход.

<Testcases> 
    <testcase> 
     <id>1</id> 
     <name>A</name> 
     </testcase> 
     <testcase> 
     <id>1</id> 
     <name>B</name> 
     </testcase> 

    <Testcases> 
+1

Почему вы определяете тесты в XML? – Steven

+0

они могут быть двумя или более тестовыми тестами, поскольку теперь мы вводим входные данные в xml-файл. – kumar

ответ

1
[TestMethod] 
public void TestDerpMethod(int a, string b, bool c) 
{ 
    //...test code... 
} 

Вы можете сделать несколько тестовых случаев, как так:

[TestMethod] 
[TestCase(12, "12", true)] 
[TestCase(15, "15", false)] 
public void TestDerpMethod(int a, string b, bool c) 
{ 
    //...test code... 
} 

Вы также можете использовать этот метод с XML с помощью этого метода:

<Rows> 
    <Row> 
     <A1>1</A1> 
     <A2>1</A2> 
     <Result>2</Result> 
    </Row> 
    <Row> 
     <A1>1</A1> 
     <A2>2</A2> 
     <Result>3</Result> 
    </Row> 
    <Row> 
     <A1>1</A1> 
     <A2>-1</A2> 
     <Result>1</Result> 
    </Row> 
</Rows> 

и C#:

[TestMethod] 
[DeploymentItem("ProjectName\\SumTestData.xml")] 
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", 
        "|DataDirectory|\\SumTestData.xml", 
        "Row", 
        DataAccessMethod.Sequential)] 
public void SumTest() 
{ 
    int a1 = Int32.Parse((string)TestContext.DataRow["A1"]); 
    int a2 = Int32.Parse((string)TestContext.DataRow["A2"]); 
    int result = Int32.Parse((string)TestContext.DataRow["Result"]); 
    ExecSumTest(a1, a2, result); 
} 

private static void ExecSumTest(int a1, int a2, int result) 
{ 
    Assert.AreEqual(a1 + a2, result); 
} 

надеются, что это будет способствовать FUL

см этой ссылке

http://sylvester-lee.blogspot.in/2012/09/data-driven-unit-testing-with-xml.html

а также

http://social.msdn.microsoft.com/Forums/vstudio/en-US/7f6a739a-9b12-4e8d-ad52-cdc0ca7a2752/using-xml-datasource-in-unit-test

+0

хорошее предложение @Backtrack :) – kumar

+0

-1: где вы получили '[TestCase]' от? –

0

Что о попытке TestCaseSource по NUnit.

Таким образом вы можете указать свой тест методу, который возвращает данные после чтения из вашего xml.

public class TestCase 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

public class XmlReader 
{ 
    public static IEnumerable<TestCase> TestCases 
    { 

     get 
     { 
      // replace this with reading from your xml file and into this array 
      return new[] 
         { 
          new TestCase {Id = 1, Name = "A"}, 
          new TestCase {Id = 1, Name = "B"} 
         }; 
     } 
    } 
} 

[TestFixture] 
public class TestClass 
{ 
    [TestCaseSource(typeof(XmlReader), "TestCases")] 
    public void SomeTest(TestCase testCase) 
    { 
     Assert.IsNotNull(testCase); 
     Assert.IsNotNull(testCase.Name); 
    } 
} 
+0

хорошее предложение @ CRice.but в настоящее время мы используем inbuild модульное тестирование vs 2010 – kumar

Смежные вопросы