MsTest ClassInitialize and Inheritance
Unfortunately you cannot achieve this that way because the ClassInitializeAttribute Class cannot be inherited.
An inherited attribute can be used by the sub-classes of the classes that use it. Since the ClassInitializeAttribute
cannot not be inherited, when the MyTest
class is initialized the ClassInitialize
method from the MyBaseTest
class cannot be called.
Try to solve it with another way. A less efficient way is to define again the ClassInitialize
method in MyTest
and just call the base method instead of duplicating the code.
A potential workaround is to define a new class with AssemblyInitializeAttribute
instead. It has a different scope, obviously, but for me it meets my needs (cross-cutting concerns, which just so happen to require exactly the same settings for every test class and test method.)
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace MyTests
{
[TestClass]
public sealed class TestAssemblyInitialize
{
[AssemblyInitialize]
public static void Initialize(TestContext context)
{
...
}
}
}
Use a static constructor on a base class? It's executed only once, by design, and it doesn't have the weird limitation on inheritance, like the ClassInitializeAttribute.