12

我有一个抽象的基础测试类,它有一个AssemblyInitialize应用于方法的属性。但它永远不会被执行......抽象基测试类在另一个程序集中,因为它用于通用扩展。任何想法如何解决这个问题?

编码

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

提前致谢

4

4 回答 4

8

发生这种情况是因为如果您不从中运行测试,则永远不会初始化程序集。我可以给出的一个解决方案(也许是一个傻瓜)是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; }
}
于 2013-04-03T09:06:31.183 回答
6

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

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

它应该被调用。

于 2013-04-03T08:49:40.683 回答
5

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

于 2016-11-01T15:35:16.813 回答
0

您还应该能够注入TextContext,这更清洁,并且如果需要,还TestContext可以在单​​独的步骤中轻松使用绑定程序集。

class Hooks
{
    private readonly ScenarioContext _scenarioContext;

    public Hooks(ScenarioContext scenarioContext, TestContext context)
    {
        _scenarioContext = scenarioContext;
    }

    [AfterStep]
    public void AfterStep()
    {
    }
}
于 2020-01-06T03:50:15.007 回答