Is it possible to execute code once before all tests run?

北城余情 提交于 2019-11-28 16:55:37
Mark Seemann

FWIW, you can use the AssemblyInitialize attribute to run code before all unit tests in an assembly executes:

[TestClass]
public class SetupAssemblyInitializer
{
    [AssemblyInitialize]
    public static void AssemblyInit(TestContext context)
    {
        // Initalization code goes here
    }
}

If you have more than one unit test assembly, I'm not aware of anything that encompasses more than one assembly.

As far as I'm aware, this is as close as you can get to a Main equivalent.

Note that the AssemblyInitialize-decorated method must be in a TestClass-decorated class which contains at least one TestMethod-decorated method, otherwise it will not be executed!

For completion, these are the "run code before" options for MSTest:

  • Use [AssemblyInitialize] to run code once per assembly, before any test in that assembly runs.
  • Use [ClassInitialize] to run code once per class, before any test in the class where the method is defined.
  • Use [TestInitialize] to run code before each and every test in the class where the method is defined.

I see this in the MS Test header.

// Use ClassInitialize to run code before running the first test in the class
//[ClassInitialize()]
//public static void MyClassInitialize(TestContext testContext) { }

This would run before the tests in one class.

Sounds like you want to run something before all of the tests.

There is also the setup script option in the test run config.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!