microsoft / testfx

MSTest framework and adapter
MIT License
697 stars 250 forks source link

MSTEST0010: report when class is `abstract` and inheritance is not set #3223

Closed Evangelink closed 1 month ago

Evangelink commented 1 month ago

Summary

Report when an abstract class declares a member marked with [ClassInitialize] without specifying the inheritance behavior.

Background and Motivation

When an abstract class is declaring a ClassInitialize member without specifying the inheritance behavior, then this member will simply be ignored so we should flag the case.

Proposed Feature

Scenarios to flag:

[TestClass]
public abstract class BaseClass
{
    [ClassInitialize]
    public static void ClassInit(TestContext context)
    {
    }
}
public abstract class BaseClass
{
    [ClassInitialize]
    public static void ClassInit(TestContext context)
    {
    }
}

Valid scenario:

[TestClass]
public abstract class BaseClass
{
    [ClassInitialize(Microsoft.VisualStudio.TestTools.UnitTesting.InheritanceBehavior.BeforeEachDerivedClass)]
    public static void ClassInit(TestContext context)
    {
    }
}

or

public abstract class BaseClass
{
    [ClassInitialize(Microsoft.VisualStudio.TestTools.UnitTesting.InheritanceBehavior.BeforeEachDerivedClass)]
    public static void ClassInit(TestContext context)
    {
    }
}