Visual Studio 2019从不同的文件夹运行UnitTests?

问题描述

我最近将Visual Studio vom 2013升级到了2019。 现在,我运行的是VS Professional 2019,V16.7.4。

我已经加载了一个包含3个C#项目和3个带有单元测试的对应项目的解决方案。 Unittest-Dlls内置在正确的文件夹中,一些测试数据通过Postbuild-Script复制到该文件夹​​下。 单元测试本身在其运行目录下搜索其测试日期,该目录通过

找到
public static string TestDataDir
{
    get
    {
        Assembly assemblyExecuting = Assembly.GetExecutingAssembly();
        string sFullDllName = assemblyExecuting.Location;
        string sExecutingDir = Path.GetDirectoryName(sFullDllName);
        string sTestDataDir = Path.Combine(sExecutingDir,"Testdata");
        System.Diagnostics.Debug.WriteLine("TestDataDir= " + sTestDataDir);
        return sTestDataDir;
    }
}

所有这些在Visual Studio 2013中都运行良好,但是现在(2019年)发生了:

很好的情况:

Good case when running from 3rd level

当我打开“测试资源管理器”时,我看到一个分层视图。当我从“第3级”(列出了所有Testclasss)运行测试时,它们运行良好,并且TestDataDir的结果是S:\WinSPC\V21xx.vs2019\__BIN\i386\Debug\GuidedSequence\UnitTests\GSDataIO\Testdata-这正是我想要的


坏情况:

Bad case - running from top

但是,当我尝试从第一级或第二级运行测试时(所有测试类中的所有测试都应在其中运行),TestDataDir返回S:\WinSPC\V21xx.vs2019\__src\_Libraries\GuidedSequence\TestResults\Deploy_werber 2020-09-22 12_50_41\Out\Testdata的原因当然导致测试失败,因为那是错误文件


那么差异如何呢?而且更重要的是:如何从构建好目录的目录运行所有测试,以备不时之需?

我只在开发机上运行测试,因此需要进行部署,我发现所有的测试结果都会污染我的源文件夹。


我已经尝试做的是使用一个.testsettings文件,在该文件中我禁用了任何部署并设置了“本地执行”,但是每次我使用这样的文件时,都会跳过所有测试。

解决方法

我想我终于明白了:.testsettings文件已被弃用,并由.runsettings文件代替。 创建此类文件并使用它时,测试将再次起作用。 不幸的是,现在没有Click-Editor了,因此您必须在Internet上搜索选项并用编辑器破解它们;-(