我将特定测试方法的测试数据保存在与函数相同的文件夹中。我以前在每个[TestMethod]
ClearAllAndLoadTestMethodData()
中都有相同的函数调用,它通过StackTrace
确定了方法名称。现在,我将此功能移至[TestInitialize]
。如何找到即将执行的方法的名称?
我认为TestContext
提供了这个。我可以通过[AssemblyInitialize()]
访问它,并在第一次运行时将其属性Name
设置为testmethod的名称。但是,稍后这不会改变(如果我将对象保存在静态字段中)。
答案 0 :(得分:19)
AssemblyInitialize方法在所有测试之前只执行一次。
使用TestContext
方法中的TestInitialize
:
[TestClass]
public class TestClass
{
[TestInitialize]
public void TestIntialize()
{
string testMethodName = TestContext.TestName;
}
[TestMethod]
public void TestMethod()
{
}
public TestContext TestContext { get; set; }
}
答案 1 :(得分:0)
[TestClass]
public class MyTestClass
{
private static TestContext _testContext;
[ClassInitialize]
public static void TestFixtureSetup(TestContext context)
{
_testContext = context;
}
[TestInitialize]
public void TestIntialize()
{
string testMethodName = MyTestClass._testContext.TestName;
switch (testMethodName)
{
case "TestMethodA":
//todo..
break;
case "TestMethodB":
//todo..
break;
default:
break;
}
}
[TestMethod]
public void TestMethodA()
{
}
[TestMethod]
public void TestMethodB()
{
}
}