问题
I have approximately 5-6 reports, they are structured the same, using Watin, I'm testing each one of these reports.
I have a shared test, I call "ReportBaseTests"..
public class ReportBaseTests { public string MenuName { get; set; } public ReportBaseTests(string name) { this.MenuName = name; } [TestMethod] public void Perform_Invalid_Date_Range() { } }
but in each of my tests, I have...
[TestClass] public class Report1Tests : ReportBaseTests { public Report1Tests() : base("Report 1") { } }
This works... each report will have a seperate Perform_Invalid_date_range, and it'll goto a different page... I was hoping someone had a better way to do this, as it also produces a seperate "non-runnable" test for the shared test since I didn't include the [TestClass]
Now, I know I could use NUnit and pass in arguments, however, I'm sticking with MSTest for the time being
回答1:
If you wanted, you could add TestContext support to your tests and have the ReportBaseTests.Perform_Invalid_Date_Range() parse the TestContext.FullyQualifiedTestClassName. For a simple test I think that's over kill.
For your solution: just put the [TestClass]
attribute on ReportBaseTests
and then mark ReportBaseTests
as abstract
. The "non-runnable" tests will disappear.
来源:https://stackoverflow.com/questions/7717315/shared-unit-tests-with-mstest