我想在单元测试中执行TestCleanup,但我需要将参数传递给清理方法。但由于自动调用默认的TestCleanup,我无法将任何参数传递给它。
有人可以建议一种方法吗?
答案 0 :(得分:3)
您可以使用测试类实例变量在setup,test和cleanup测试方法之间进行通信:
namespace YourNamespace
{
[TestClass]
public class UnitTest1
{
private string someValue;
[TestMethod]
public void TestMethod1()
{
someValue = "someValue";
}
[TestCleanup]
public void CleanUp()
{
// someValue is accessible here.
}
}
}
由于CleanUp()
方法将在每次单元测试后运行,someValue
将绑定到正确的单元测试的上下文。
希望这会有所帮助。
答案 1 :(得分:0)
您可以在测试类中设置一个字段,其值为您认为需要传递的参数值,但说实话,您需要一些参数来清理,这对我来说至少是这个这将是一种气味,测试出了问题。
您的单元测试不应该要求清理,每个测试应该负责进行自己的设置并且应该单独运行。
如果您的集成测试有一些需要清理的外部依赖项,那么您可以使用我建议的字段(您可能会在每次测试开始时设置该字段(以便清理函数知道)如果测试失败的话要清理什么)在测试后清理正确的值)或者我会做一个明确的清理函数(它带有所需的参数),这个函数最后明确地被每个测试调用,然后让TestFixture清理,确保它清理了所有数据,这些数据可能已被 ANY 使用,以防其中任何一个失败但没有调用他们的清理方法。< / p>