2009-12-02 99 views
8

MSTest中是否有等效的SuiteBuilder?到目前为止找不到一个。在MSTest中运行时动态创建单元测试方法

我有一堆xml文件,每个文件都被视为映射到测试方法。因为有100个这些,并且手动为每个测试写测试,所以不是一个好主意。

所以在nunit中,您可以实现ISuiteBuilder并让测试案例动态运行并显示为那些许多测试方法。

我正在寻找一种方法来在MSTest中做同样的事情。

我已经看过DataSource属性,但它迎合了1个数据源xml文件/ csv每个测试方法,迫使我写出100多个测试方法。我也想保留每个xml文件,并且不要将它们全部放在一个大文件中,这样会变得无法维护。

有人试过这个或有什么建议吗?

回答

2

不完全符合您的要求,但您可以使用pex进行自动和可参数化的白盒测试。这样,你不需要手动去做所有的事情。 Pex支持MSTest以及NUnit。生成的测试使用额外的文件,您不需要任何xml文件。

但我认为你不能轻易使用NUnit中现有的.xml文件,并使用pex与MSTest共享它们 - 如果这是你的意图。

1

我已经这样做了。以下是你需要做什么:

测试:

[TestMethod] 
[DeploymentItem("MyTestData")] 
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", 
        "|DataDirectory|\\MyTestData.xml", 
        "Test", 
        DataAccessMethod.Sequential)] 
public void MyTest() 
{ 
    string file = TestContext.DataRow[0].ToString(); 
    string expectedResult = TestContext.DataRow[1].ToString(); 
     // TODO: Test something 
} 

MyTestData.xml:

<?xml version="1.0" encoding="utf-8" ?> 
<Rows> 
    <Test> 
    <File>test1.xml</File> 
    <Result>1</Result> 
    </Test> 
    <Test> 
    <File>test2.xml</File> 
    <Result>2</Result> 
    </Test> 
</Rows> 

test1.xml和test2.xml必须存在于MyTestData目录。

+0

为什么downvote? – frast 2011-07-14 13:28:54