2013-04-03 42 views
8

Tôi có một lớp thử nghiệm cơ sở trừu tượng có thuộc tính AssemblyInitialize được áp dụng cho một phương thức. Nhưng nó sẽ không bao giờ được thực hiện ... Lớp kiểm tra cơ bản trừu tượng nằm trong một assembly khác vì nó là một phần mở rộng chung. Bất kỳ ý tưởng làm thế nào để giải quyết điều này?AssemblyInitialize trong lớp dẫn xuất

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

Cảm ơn trước

Trả lời

5

Điều này xảy ra vì Hội đồng không bao giờ được khởi tạo nếu bạn không chạy thử nghiệm từ nó. Một giải pháp tôi có thể cung cấp (có thể là một kẻ ngốc một) là sử dụng AssemblyInitialize trên các hội đồng khác và gọi cho cơ sở AssemblyInitialize

Trong một TestProject trong đó có xét nghiệm thêm đoạn mã sau:

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

    public TestContext TestContext { get; set; } 
} 
+0

Cùng một giải pháp mà tôi đã triển khai như một giải pháp thay thế. Cảm ơn! – mrtentje

5

cố gắng thực hiện một lớp riêng biệt mà không thừa kế trong dự án thử nghiệm của bạn:

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

Nó nên được gọi.

3

tôi đã có cùng một vấn đề khi tôi không đánh dấu lớp cơ sở thử nghiệm với thuộc tính [TestClass].

Các vấn đề liên quan