我有一个抽象的基础测试类,它具有应用于方法的AssemblyInitialize
属性。但它永远不会被执行...抽象基础测试类在另一个程序集中,因为它是用于通用扩展。任何想法如何解决这个问题?
代码
[TestClass]
public abstract BaseTestClass
{
[AssemblyInitialize]
public static void AssemblyInit(TestContext context)
{
//DoDomething
}
}
提前致谢
答案 0 :(得分: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; }
}
答案 1 :(得分:5)
尝试在Test Project中实现一个没有继承的单独类:
[TestClass]
public static class YourClass
{
[AssemblyInitialize]
public static void AssemblyInit(TestContext context)
{
//DoSomething
}
}
应该叫它。
答案 2 :(得分:4)
当我没有使用[TestClass]
属性标记测试基类时,我遇到了同样的问题。
答案 3 :(得分:0)
您还应该能够注入TextContext
,它更清洁,并且如果需要,可以在单独的步骤中将TestContext
绑定到装配件。
class Hooks
{
private readonly ScenarioContext _scenarioContext;
public Hooks(ScenarioContext scenarioContext, TestContext context)
{
_scenarioContext = scenarioContext;
}
[AfterStep]
public void AfterStep()
{
}
}