C# - 从app.config有条件地将属性应用于方法

时间:2014-02-26 10:51:41

标签: c# selenium custom-attributes preprocessor-directive

TLDR; 如何根据app.config文件中的值在C#中创建预处理指令?

我正在使用Selenium进行集成测试。我有两个测试方法类,负责测试我的应用程序的不同区域。我的测试类使用[TestClass]属性进行标识,我的测试方法使用[TestMethod]属性进行标识,如下所示:

[TestClass]
public class TestsForAreaX
{
    [TestMethod]
    public void TestFoo()
    {
        //Do test logic here
    }
    [TestMethod]
    public void TestBar()
    {
      //Do test logic here
    }
}

当我重建我的解决方案时,所有已应用[TestMethod]的方法都会出现在测试资源管理器中。

我现在要做的是在app.config中添加一些标志,以有条件地应用[TestMethod]属性,以便我可以指定要运行的测试。原因是一些测试花了很长时间,我想排除它们而不必直接调整方法属性。

我知道预处理指令,如:

#if DEBUG
    //debug mode
#elif
    //release mode
#endif

但这只适用于构建配置,而不适用于app配置文件中的值,除非我弄错了?

1 个答案:

答案 0 :(得分:2)

编译后无法删除程序集的属性。也许您正在寻找类别:

[TestClass]
public class TestsForAreaX
{
    [TestCategory("LongRunning"), TestMethod]
    public void TestFoo()
    {
        //Do test logic here
    }
    [TestCategory("ShortRunning"), TestMethod]
    public void TestBar()
    {
      //Do test logic here
    }
} enter code here

然后,您可以至少从命令行运行不同类别的测试,此站点说明如何: http://msdn.microsoft.com/en-us/library/dd286683.aspx