当前位置:  开发笔记 > 编程语言 > 正文

MsTest - 在程序集中的每个测试之前执行方法

如何解决《MsTest-在程序集中的每个测试之前执行方法》经验,为你挑选了3个好方法。

是否可以在装配中的每个测试之前运行特定方法?

我知道TestInitialize属性,但这个属性有"类范围".如果它在Test类中定义,它将在此类的每个测试之前执行.

我想定义一个方法,该方法将在整个程序集中定义的每个测试之前执行.



1> FryGuy..:

[TestInitialize()] 是你需要的.

private string dir;

[TestInitialize()]
public void Startup()
{
    dir = Path.GetTempFileName();
    MakeDirectory(ssDir);
}

[TestCleanup()]
public void Cleanup()
{
    ss = null;
    Directory.SetCurrentDirectory(Path.GetTempPath());

    setAttributesNormal(new DirectoryInfo(ssDir));
    Directory.Delete(ssDir, true);
}


[TestMethod]
public void TestAddFile()
{
    File.WriteAllText(dir + "a", "This is a file");
    ss.AddFile("a");
    ...
}

[TestMethod]
public void TestAddFolder()
{
    ss.CreateFolder("a/");
    ...
}

这为每个测试提供了一个新的随机临时路径,并在完成后删除它.您可以通过在调试中运行它并查看每个测试用例的dir变量来验证这一点.


只有在从这一个类执行测试之前,才会调用StartUp方法.我想在汇编中所有类的所有测试之前执行方法
谢谢答案.但我想在汇编中的每个测试之前执行方法 - 而不是在每个特定类中的每个测试之前.也许我的问题不够明确.

2> nihique..:

我不确定在其他测试框架(例如MbUnit)中,MsTest开箱即可使用此功能.

如果我必须使用MsTest,那么我通过使用[TestInitialize]属性定义抽象类TestBase来解决这个问题,并且需要此行为的每个测试都派生自此基类.在您的情况下,程序集中的每个测试类都必须从此基础继承...

可能还有另一种解决方案,你可以制作你的自定义测试属性 - 但我还没有尝试过这个... :)



3> 小智..:

你想用[AssemblyInitialize].

请参阅:MSDN链接

或者这个问题: 在stackoverflow上

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有