在TestCleanup中传递参数

时间:2011-08-02 07:44:13

标签: .net unit-testing mstest

我想在单元测试中执行TestCleanup,但我需要将参数传递给清理方法。但由于自动调用默认的TestCleanup,我无法将任何参数传递给它。

有人可以建议一种方法吗?

2 个答案:

答案 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>