2016-05-23 76 views
2

我有一个问题,我的[AssemblyCleanup]方法没有被调用。AssemblyCleanup未运行。

我目前正在构建一个自动化框架,并希望在我的测试之前和之后完成一些API调用。自从我发现程序集初始化/清理方法以来,它们将完美地满足我需要做的事情。但我无法运行[AssemblyCleanup]方法。

我有我的测试固有的基类,这就是我想要放置[AssemblyCleanup]方法的地方。

我的课。

[TestClass] 
public class TestBaseChrome: WebDriver 
{ 
    public TestContext TestContext { get; set; } 

    [TestInitialize] 
    public void Initialize() 
    { 
     //Do Stuff Here for tests 
    } 

    [TestCleanup] 
    public void Cleanup() 
    { 
     //used for end of test reporting 
    } 

    [AssemblyCleanup] 
    public static void EndOfSuiteActions() 
    {    
     //Stuff here when whole test suite finished 
    } 
} 

我见过的例子herehere并表明[AssemblyCleanup]需要在与[TestClass]属性的类。如果我将[AssemblyCleanup]放在具有实际测试的课程中,它将按预期工作。但是我希望我所有的测试之前/之后的测试一次。

任何意见,将不胜感激。

回答

3

我相信我已经找到了我自己的问题的答案。

如果[TestClass]继承自派生类的不同程序集中的基类,则不会执行基类[AssemblyInitialize][AssemblyCleanup]方法。

Source

所以作为我的自动化测试是在两个项目的解决方案(一个处理框架和一个处理测试)和基类是在框架中,但测试是其他项目。我在链接中遇到问题。

+1

这是我的问题。我在我的解决方案的独立项目中使用了我的框架和测试,并且SetupTeardown类存在于我的框架项目中。一旦我将SetupTeardown类移入测试项目,'[AssemblyInitialize]'和'[AssemblyCleanup]'就像一个魅力。 – Keith