.NET 解决方案中的功能开发工具库应该放在哪里?

Where to put my library of development tools that are functions in a .NET solution?

我带来了一个不断增长的快速一键式函数库,我想将其称为开发工具。到目前为止,我已经将它们编写为我在 [Ignore] 设置的 [TestMethod, TestCategory("ToolsManagement")] 函数,当我想使用我的工具时,我删除了 [Ignore] 行和 运行 测试。

什么是组织我的工具库的更好方法,因为我厌倦了将它们视为测试函数?


编辑 1:

我会尽量解释更多我需要的东西...我希望它会更清楚。

在开发时,我调试和测试应用程序,所以我经常在数据库中 insert/update 数据。通常,我想创建快照恢复快照,或重新创建数据库,所以它是空的。我还编写了函数以重现业务案例,在不同的地方插入大量数据作为示例,而不是手动执行。这些是我想要快速轻松访问但不是从测试视图访问的开发工具的示例。

您可以通过单击 运行-all 命令上方的小图标按不同类型对测试进行排序。这可能会帮助您整理和折叠您不 运行 的那些。您还可以将那些 'tools' 拉出到解决方案中的另一个项目中,这样它们就不会成为您的单元测试项目的一部分。

我建议您使用名为 "C# Interactive" 的新 Visual Studio 2015 功能来执行您的实用程序功能。您可以在代码中标记它们并按 CTRL+E,Ctrl+E 来执行此方法。像这样,您可以一起删除 [TestMethod] 属性,这样它们就不会出现在 VS 测试资源管理器中!

可以给您的另一个建议是捆绑此代码以便能够从 CLI 执行它。这可以帮助您自动执行任务,对 CLI 有很好的跟踪,了解正在发生的事情——这可能比在 VS 中执行它更方便!

您期望的功能是有条件的忽略属性。 MS 单元测试不可用。

解决方法 1:

作为解决方法,您可以使用以下代码片段

[TestClass]
public class UnitTest1
{
    [TestInitialize()]
    public void Initialize() 
    {
        //Assert.Inconclusive("Message");        
    }

    [TestMethod]
    public void TestMethod1()
    {

    }

    [TestMethod]
    public void TestMethod2()
    {

    }
}

您可以切换

//Assert.Inconclusive("Message");

并实现您预期的功能。

注意:由于我们使用“[TestInitialize()]”,所以此 TestClass 中的所有测试方法首先都会 运行。

解决方法 2: 您可以使用条件编译,如下图所示

[TestClass]
public class UnitTest1
{
    [TestMethod
    #if !Ignore
    , Ignore()
    #endif
    ]
    public void TestMethod1()
    {

    }

    [TestMethod
    #if !Ignore
    , Ignore()
    #endif
    ]
    public void TestMethod2()
    {

    }
}

我强烈建议一个包含所有作业的单独控制台应用程序,或者,如果一切都与您的数据库服务器相关,一个或多个包含这些操作的 .sql 文件(然后,select 什么你需要 运行 和 CTRL+ALT+E 来执行。