在派生类中初始化

本文关键字:初始化 派生 | 更新日期: 2023-09-27 18:07:07

我有一个抽象的基本测试类,它有一个应用于方法的AssemblyInitialize属性。但它永远不会被执行……抽象基测试类位于另一个程序集中,因为它用于泛型扩展。有办法解决这个问题吗?

的代码
[TestClass]
public abstract BaseTestClass
{    
   [AssemblyInitialize]
   public static void AssemblyInit(TestContext context)
   {
      //DoDomething
   }
}

Thanks in advance

在派生类中初始化

之所以会发生这种情况,是因为如果不从程序集运行测试,程序集永远不会初始化。我可以给出的一个解决方案(可能是一个愚蠢的解决方案)是在其他组件上使用AssemblyInitialize,并将基础AssemblyInitialize称为

在包含测试的TestProject中添加以下代码:

[TestClass]
public class UnitTest1
{
    [AssemblyInitialize]
    public static void AssemblyInitialize(TestContext testContext)
    {
        // call the base AssemblyInitialize
        BaseTestProject.BaseTest.AssemblyInitialize(testContext);
    }
    public TestContext TestContext { get; set; }
}

尝试在您的测试项目中实现一个没有继承的单独类:

[TestClass]
public static class YourClass
{
    [AssemblyInitialize]
    public static void AssemblyInit(TestContext context)
    {
       //DoSomething
    }
}

应该叫

当我没有用[TestClass]属性标记测试基类时,我遇到了同样的问题。

您还应该能够注入TextContext,这更干净,并且如果需要的话,还可以在单独的步骤绑定程序集中使用TestContext

class Hooks
{
    private readonly ScenarioContext _scenarioContext;
    public Hooks(ScenarioContext scenarioContext, TestContext context)
    {
        _scenarioContext = scenarioContext;
    }
    [AfterStep]
    public void AfterStep()
    {
    }
}