我想知道是否可以在运行时动态地向NUnit添加其他测试,我计划基于配置文件。我的测试旨在比较来自两个来源的数据(例如开发系统和测试系统,用于特定的一组值,包括日期和客户端。)因此,数据不需要硬编码(我这样做)对于其他测试。)我目前已经为我想要测试的一组选定值(例如,不同的日期和客户端)设置了大量测试,这些测试被硬编码到我的源代码中,类似如下: / p>
[Test]
public void ClientName_Janurary_1_2012()
{
RunTest("Client Name", new DateTime(2012, 1, 1));
}
但是,这意味着如果需要测试其他日期,则需要更改源代码以为每个日期添加[Test]
方法(通常这些测试方法只会是一行,正在调用另一个方法,将日期作为参数。)
是否可以在运行时动态创建出现在NUnit中的测试,因此可以通过更改配置文件来添加测试?
答案 0 :(得分:4)
我建议您不要在每次数据更改时生成新的测试,而是编写单个参数化测试和NUnit扩展,该扩展使用该文件作为测试的输入。您可以使用NUnit RowTest之类的东西作为起点。
答案 1 :(得分:4)
正如其他人所说,你真正要求的(我认为)是如何在运行时使用新的测试数据。
您可以使用TestCaseSource属性在NUnit中本机执行此操作。只需将该属性指向一个函数,该函数读取您的配置文件并将输入映射到所需的输出。测试数据中的每个点都将显示为该测试方法的单独“子”。