标签: runsettings

如何在RunSettings文件中访问TestRunParameters

通过https://msdn.microsoft.com/en-us/library/jj635153.aspx阅读 我创建了一个.RunSettings文件,其中包含一些类似于示例的参数:

  <TestRunParameters>
    <Parameter name="webAppUrl" value="http://localhost" />
    <Parameter name="webAppUserName" value="Admin" />
    <Parameter name="webAppPassword" value="Password" />
  </TestRunParameters>
Run Code Online (Sandbox Code Playgroud)

我计划.RunSettings为每个环境提供一个文件,其中包含适当的URL和凭据,用于在指定的RunSettings文件环境中运行CodedUI测试.

我可以看到从命令行引用我可以运行的设置文件:

vstest.console myTestDll.dll /Settings:Local.RunSettings /Logger:trx
vstest.console myTestDll.dll /Settings:QA.RunSettings /Logger:trx
Run Code Online (Sandbox Code Playgroud)

等等...

但我没有看到任何方式来调用如何TestRunParameters在codedUI测试中实际使用from.

我想要做的是设置测试初始化​​程序,使用它TestRunParameters来确定登录的位置以及要使用的凭据.像这样的东西:

[TestInitialize()]
public void MyTestInitialize()
{

    // I'm unsure how to grab the RunSettings.TestRunParameters below
    string entryUrl = ""; // TestRunParameters.webAppUrl
    string userName = ""; // TestRunParameters.webAppUserName
    string password = ""; // TestRunParameters.webAppPassword

    LoginToPage(entryUrl, userName, password);
}

public void LoginToPage(string entryUrl, string …
Run Code Online (Sandbox Code Playgroud)

c# asp.net coded-ui-tests vs-unit-testing-framework runsettings

35
推荐指数
3
解决办法
2万
查看次数

如何使用VS2013上的runsettings文件并行执行测试

我们已经从VS2010迁移到VS2013环境.我们的解决方案有超过5K的单元测试,在VS2010上,他们花了大约5分钟,而在VS2013,他们需要大约20分钟.

我们看到使用该testsettings文件存在一个问题,因为它将VS2013配置为使用以前的测试框架,因此我们将其移动到一个runsettings文件中,这实际上解决了我们在转换时遇到的一些问题.

现在主要的想法是我们找不到如何配置VS2013来并行执行测试.在前VS上我们有一个<Execution parallelTestCount="0">似乎在runsettings文件上不可用的 设置.

总结一下,我们如何使用runsettings文件并行运行测试,以便我们使用更新的框架?

谢谢.

.net unit-testing visual-studio-2013 runsettings

8
推荐指数
1
解决办法
1825
查看次数

如何强制将未经测试的程序集包含在代码覆盖范围内?

我正在尝试使Visual Studio的代码覆盖率工具有用.我正在研究遗留项目,为了重构所有这些代码,我添加了单元测试.问题是,当我测量代码覆盖率时,我只看到三个具有测试方法的dll程序集.

你们中的一些人可能会说"如果它不存在,就意味着它没有经过测试",基本上你是对的,但我希望这个机制可以帮助我避免犯错误.我想知道未经测试的类和方法在那里,所以我知道覆盖/未覆盖之间的比例.

这是我的自定义.runsettings文件的include/exclude部分.

<ModulePaths>
    <Include>
        <ModulePath>.*Some\.Library\.OfMine\.dll$</ModulePath>
        <ModulePath>.*\.dll$</ModulePath>
    </Include>
    <Exclude>
        <ModulePath>.*my\.tests\.dll$</ModulePath>
        <ModulePath>.*xunit\.core\.dll$</ModulePath>
        <ModulePath>.*fluentassertions\.dll$</ModulePath>
        <ModulePath>.*fluentassertions\.core\.dll$</ModulePath>
    </Exclude>
</ModulePaths>
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,但代码覆盖率实际上也列出了FluentAssertions,XUnit和My.Tests.dll(存储测试),所以我将它们排除在外.那部分确实奏效了.这个链接帮助了我.但是,当我添加Some.Library.OfMine.dll时,它不会显示在代码覆盖率结果中.

为了帮助指出它,我添加了这一部分:

<SymbolSearchPaths>              
    <Path>E:\The\Absolute\Path\To\The\Test\Project\bin\Debug</Path>
</SymbolSearchPaths>
Run Code Online (Sandbox Code Playgroud)

并在测试项目中向Some.Library.OfMine.dll添加了一个引用.我确定在构建完成后,dll和pdb就在那里.

但是我仍然无法在代码覆盖率结果中看到覆盖/未覆盖库中的Some.Library.OfMine.dll.

实际上我可以做我想做的事吗?如果是这样,如何实现呢?

code-coverage visual-studio runsettings

6
推荐指数
0
解决办法
154
查看次数

使用.runsettings从程序集中排除名称空间

我试图从程序集Acme.Foundations.web.ext.dll中排除所有名称空间,但排除Acme.Foundations.Web.Ext.Controllers.请帮助创建一个runsettings文件.

<DataCollectionRunSettings>
     <DataCollectors>
        <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
           <Configuration>
             <CodeCoverage>
               <ModulePaths>
                 <Exclude>
                    <ModulePath>.*Ext.Helpers*</ModulePath>
                    ???
                 </Exclude>
               </ModulePaths>
             </CodeCoverage>
           </Configuration>
        </DataCollector>
     </DataCollectors>
  </DataCollectionRunSettings>

Acme.Foundations.web.ext.dll
Acme.Foundations.Web.Ext.Controllers
Acme.Foundations.Web.Ext.Helper
Acme.Foundations.Web.Ext.Models
Acme.Foundations.Web.Ext.Properties
Acme.Foundations.Web.Ext.Resources
Acme.Foundations.Web.Ext.Utilities
Acme.Foundations.Web.Ext.ViewModels
Acme.Identity.Web
Acme.Identity.Web.App_Start
Acme.Identity.Web.Identity
Acme.Utilities
System.Web.Mvc.Html
Run Code Online (Sandbox Code Playgroud)

c# unit-testing code-coverage visual-studio runsettings

6
推荐指数
1
解决办法
3378
查看次数

提供.runsettings文件时,VSTS中没有代码覆盖率

我们在Visual Studio Online(VSTS)构建定义中遇到代码覆盖问题,在定义自定义.runsettings文件时没有返回任何结果.

在本地,这工作正常,但是,当我们使用此文件更新Visual Studio Online上的构建定义时,它不会返回任何结果.

我的.runsettings文件,我发现每个例子都留在那里.

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <RunConfiguration>
    <ResultsDirectory>.\TestResults</ResultsDirectory>
    <TargetPlatform>x86</TargetPlatform>
    <TargetFrameworkVersion>Framework40</TargetFrameworkVersion>
    <TreatTestAdapterErrorsAsWarnings>false</TreatTestAdapterErrorsAsWarnings>
    <CollectSourceInformation>true</CollectSourceInformation>
    <MaxCpuCount>0</MaxCpuCount>
  </RunConfiguration>
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
        <Configuration>
          <CodeCoverage>
            <ModulePaths>
              <Include>
                <ModulePath>.*\.dll$</ModulePath>
                <ModulePath>.*\.exe$</ModulePath>
              </Include>
              <Exclude>
                <ModulePath>.*CPPUnitTestFramework.*</ModulePath>
                <ModulePath>.*TestAdapter.*</ModulePath>
                <ModulePath>.*xamarin.*</ModulePath>
              </Exclude>
            </ModulePaths>
            <Functions>
              <Exclude>
                <Function>^Fabrikam\.UnitTest\..*</Function>
                <Function>^std::.*</Function>
                <Function>^ATL::.*</Function>
                <Function>.*::__GetTestMethodInfo.*</Function>
                <Function>^Microsoft::VisualStudio::CppCodeCoverageFramework::.*</Function>
                <Function>^Microsoft::VisualStudio::CppUnitTestFramework::.*</Function>
              </Exclude>
            </Functions>
            <Attributes>
              <Exclude>
                <Attribute>^System.Diagnostics.DebuggerHiddenAttribute$</Attribute>
                <Attribute>^System.Diagnostics.DebuggerNonUserCodeAttribute$</Attribute>
                <Attribute>^System.Runtime.CompilerServices.CompilerGeneratedAttribute$</Attribute>
                <Attribute>^System.CodeDom.Compiler.GeneratedCodeAttribute$</Attribute>
                <Attribute>^System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute$</Attribute>
                <Attribute>^NUnit.Framework.TestFixtureAttribute$</Attribute>
                <Attribute>^Xunit.FactAttribute$</Attribute>
                <Attribute>^Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute$</Attribute>
              </Exclude>
            </Attributes>
            <Sources>
              <Exclude>
                <Source>.*\\atlmfc\\.*</Source>
                <Source>.*\\vctools\\.*</Source>
                <Source>.*\\public\\sdk\\.*</Source>
                <Source>.*\\microsoft sdks\\.*</Source>
                <Source>.*\\vc\\include\\.*</Source>
              </Exclude>
            </Sources>
            <CompanyNames>
              <Exclude>
                <CompanyName>.*microsoft.*</CompanyName>
              </Exclude>
            </CompanyNames> …
Run Code Online (Sandbox Code Playgroud)

code-coverage runsettings azure-devops

6
推荐指数
1
解决办法
1173
查看次数

vstest.console.exe仅为Moq.dll生成封面

我正在尝试使用vstest.console.exe生成代码覆盖率报告.我也使用.runsettings文件并将其作为参数传递.

无论我想做什么,它只为moq.dll生成一个覆盖率报告.

我在下面分享我正在运行的命令参数的全文以及.runsettings文件的内容.任何想法,我在哪里做错了什么?

命令:

vstest.console.exe"C:\ Xyz.Tests\bin\Debug \netcoreapp2.0\Xyz.Tests.dll"/ InIsolation/EnableCodeCoverage /settings:CodeCoverage.runsettings

CodeCoverage.runsettings文件内容:

<RunSettings>
<DataCollectionRunSettings>
  <DataCollectors>
    <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" enabled="false">
      <Configuration>
        <CodeCoverage>
        </CodeCoverage>
      </Configuration>
    </DataCollector>
  </DataCollectors>
</DataCollectionRunSettings>
</RunSettings>
Run Code Online (Sandbox Code Playgroud)

生成的代码覆盖率报告的图像: 在此输入图像描述

c# code-coverage runsettings .net-core vstest.console.exe

6
推荐指数
1
解决办法
945
查看次数

如何强制从代码覆盖范围中排除某些程序集?

我试图通过使用runsettings文件来限制在TFS中的代码覆盖率过程中分析的程序集,但是即使我明确地将它们排除在外,一些程序集也坚持要进行分析.

这是我目前的runsettings文件内容:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <!-- Configurations for data collectors -->
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="Code Coverage" 
                     uri="datacollector://Microsoft/CodeCoverage/2.0" 
                     assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
        <Configuration>
          <CodeCoverage>
            <ModulePaths>
              <Include>
                <ModulePath>.*Cloud4Mobile.*</ModulePath>
              </Include>
              <Exclude>
                <ModulePath>.*Tests.dll$</ModulePath>
                <ModulePath>.*TestUtilities.dll$</ModulePath>
              </Exclude>
            </ModulePaths>
            <CompanyNames>
              <Include>.*Mobiltec.*</Include>
            </CompanyNames>
          </CodeCoverage>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>
Run Code Online (Sandbox Code Playgroud)

但是,当我从Visual Studio运行代码覆盖率来测试此文件时,分析仍然显示其他与我的过滤器不匹配的程序集,如AutoMapper和CacheManager:

在此输入图像描述

请注意,默认情况下,我的设置已经排除了这些程序集,但即使这样,我也尝试明确地将它们排除在无效之外,如下所示:

<Exclude>
  <ModulePath>^AutoMapper.dll$</ModulePath>
  ...
</Exclude>
Run Code Online (Sandbox Code Playgroud)

我尝试了正则表达式的所有变体,从限制较少(使用.*)到限制性最强(如该示例).这些程序集污染了我在TFS构建摘要中获得的报告,我想将它们从分析中删除.这是我从TFS获得的完整输出,这显然是无用的:

在此输入图像描述

我设法使用此.runsettings配置文件删除了大部分内容,但是如何确保这些异常值也不会显示在那里?为什么他们甚至首先显示,考虑到它们与我的包含过滤器完全匹配?

code-coverage tfsbuild visual-studio runsettings

6
推荐指数
1
解决办法
1308
查看次数

vstset.console.exe 程序集解析失败

我有一个UnitTests.dll,Common.dll被引用(都是用 VS2015 构建的)。

我有以下目录结构:

C:\Test\
    - UnitTests.dll
    - UnitTests.runsettings    
C:\Bin\
    - Common.dll
Run Code Online (Sandbox Code Playgroud)

UnitTests.runsettings 内容如下:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
    <RunConfiguration>
        <TargetPlatform>x64</TargetPlatform>
    </RunConfiguration>
    <MSTest>
        <MapInconclusiveToFailed>True</MapInconclusiveToFailed>
        <CaptureTraceOutput>False</CaptureTraceOutput>
        <DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
        <DeploymentEnabled>False</DeploymentEnabled>
        <AssemblyResolution>
            <Directory Path="C:\Bin\" includeSubDirectories="true" />
        </AssemblyResolution>
    </MSTest>    
</RunSettings>
Run Code Online (Sandbox Code Playgroud)

我调用测试:

C:\Test> vstest.console.exe UnitTests.dll /settings:UnitTests.runsettings /inIsolation
Run Code Online (Sandbox Code Playgroud)

vstest.console.exe指的是C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe


我收到以下错误:

Starting test execution, please wait... 
Failed   TestMethod1 
Error Message:
    Test method UnitTests.UnitTest1.TestMethod1 threw exception: System.IO.FileNotFoundException: Could not load file or assembly 'Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or …
Run Code Online (Sandbox Code Playgroud)

c# mstest runsettings visual-studio-2015 vstest.console.exe

6
推荐指数
1
解决办法
1654
查看次数

如何在命令行上将运行时参数传递给 dotnet test?

我在 .NET Core 项目中有一组单元测试并使用 runsettings 文件。我正在尝试设置 Azure DevOps 以对我的部署进行自动化测试。作为此过程的一部分,我需要覆盖命令行上运行设置中的参数。

我有一个包含以下部分的运行设置文件:

  <TestRunParameters>
    <Parameter name="ApiUrl" value="https://myurl..." />
  </TestRunParameters>
Run Code Online (Sandbox Code Playgroud)

我有一个静态构造函数,可以像这样保存 TestContext:

        [ClassInitialize]
        public static void TestClassInitialize(TestContext context)
        {
            TestContext = context;
        }
Run Code Online (Sandbox Code Playgroud)

我使用以下方法从 TestContext 检索设置:

        protected string GetStringSetting(string settingName)
        {
            return TestContext.Properties[settingName] as string;
        }
Run Code Online (Sandbox Code Playgroud)

当我使用选定的 runsettings 文件运行测试时,它会获取 TestContext 并且我看到 ApiUrl 条目已成功检索。

现在,我想从命令行设置此参数。我正在使用如下命令:

    dotnet test <myproject.csproj> --configuration Release -- ApiUrl=https://newurl
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息,指出字典不包含键“ApiUrl”,这表明该设置未处理。通过阅读文档,我认为也许我需要使用 TestRunParameters.ApiUrl 完全指定设置的名称。这给了我一个 XML 错误。

从我读到的所有内容来看,我认为我这样做是正确的,无法找出问题所在。我使用的是 2.1.503 版本的工具。

有人可以指导我如何进行这项工作吗?

c# testing mstest runsettings .net-core

6
推荐指数
2
解决办法
1万
查看次数

如何在xUnit固定装置中读取.runsettings测试参数

我正在为使用DocumentDB(CosmosDB)作为存储的dotnet核心应用程序编写xUnit单元测试用例。编写单元测试以针对本地cosmos db仿真器执行。在Azure DevOps构建环境中,我设置了Azure Cosmos DB CI / CD任务,该任务在内部创建了一个容器来安装模拟器。但是,我无法弄清楚如何将仿真器的端点传递给xUnit固定装置?

xUnit固定装置是否可以通过任何方式读取.runsettings测试参数,或者可以通过其他来源传递参数?

更新资料

目前,我使用环境变量实现了该方案,但仍然不满意在构建任务中使用powershell将连接字符串定义为环境变量,并在执行单元测试期间通过代码读取该字符串。我在想是否还有另一种方法可以实现它。

下面的快照显示了如何将构建任务当前配置为解决方法,以实现所需的目标: 在此处输入图片说明

并将代码读取为

var serviceEndpoint = Environment.GetEnvironmentVariable("CosmosDbEmulatorEndpointEnvironmentVariable");
Run Code Online (Sandbox Code Playgroud)

由于UnitTest任务提供了传递.runsettings / .testsettings的选项,该选项带有覆盖测试运行参数的选项,因此认为使用这些选项可以实现某些目标。

xunit runsettings

5
推荐指数
2
解决办法
846
查看次数

C# 单元测试 - 使用 runsettings 文件进行有序测试

我正在尝试开发一个自动回归测试框架作为单元测试。所以我使用有序测试来组合不同的测试步骤,并以易于使用的方式组合它们。出于配置目的,我想使用runsettings文件,尤其是 TestRunParameters。这工作没有任何错误,但只有在单独执行每个测试时才有效。如果我使用orderedtest执行测试,TestContext我用来访问 TestRunParameters 的对象不再包含它们。我在直接测试方法的同时调试对象,同时也使用有序测试进行测试。在第一种情况下,对象具有所需的属性,但是当按照orderedtest 执行测试时,对象看起来完全不同。这两种类型的执行之间有什么主要区别吗?

不同的 TestContext 对象:

按单张测试画面
执行 按顺序测试画面执行

我得到的错误如下:

Ergebnis StackTrace:    at Regression.FileSystem.FileSystemTestInitializer(TestContext context) in \FileSystem.cs:line 18 
Ergebnis Meldung:   Class Initialization method Regression.FileSystemTestInitializer threw exception. System.NullReferenceException: System.NullReferenceException: Object reference not set to an instance of an object..
Run Code Online (Sandbox Code Playgroud)

我执行以测试和加载设置的代码如下:

 namespace Regression
{
    [TestClass]
    public class FileSystem
    {
        private static Logger logger = LogManager.GetCurrentClassLogger();
        private static Dictionary<String, String> runSettings = new Dictionary<String, String>();

        [ClassInitialize]
        public static void …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing ordered-test testcontext runsettings

5
推荐指数
0
解决办法
842
查看次数

使用 RunSettings 文件指定相对文件路径

我正在寻找一种使用相对文件路径定义程序集分辨率值的方法。

我按照 Microsoft文档的建议通过定义和引用环境变量来解决此问题。正如您从下面的代码片段中看到的,我定义了一个环境变量“test”,并在 MSTest 适配器部分引用它。使用 VS 编译和运行测试会产生有关缺少引用依赖项的错误。

我已经验证通过将“测试”值设置为等于硬编码目录路径可以解决此问题。除了代码片段中设置的值之外,我还尝试了以下“test”值定义,但没有成功:

  • $(OutDir)............\一些\路径\
  • $(MSBuildProjectDirectory)........\一些\路径\
<RunConfiguration>
      <MaxCpuCount>1</MaxCpuCount>
      <!-- Path relative to directory that contains .runsettings file-->
      <ResultsDirectory>.\TestResults</ResultsDirectory>

      <!-- x86 or x64 -->
      <!-- You can also change it from the Test menu; choose "Processor Architecture for AnyCPU Projects" -->
      <TargetPlatform>x86</TargetPlatform>

      <!-- Framework35 | [Framework40] | Framework45 -->
      <TargetFrameworkVersion>Framework40</TargetFrameworkVersion>

      <!-- Path to Test Adapters -->
      <TestAdaptersPaths>%SystemDrive%\Temp\foo;%SystemDrive%\Temp\bar</TestAdaptersPaths>

      <!-- TestSessionTimeout was introduced in Visual Studio 2017 version 15.5 -->
      <!-- Specify timeout in milliseconds. A valid …
Run Code Online (Sandbox Code Playgroud)

.net c# runsettings

5
推荐指数
0
解决办法
816
查看次数

从代码指标中排除测试代码

是否可以从代码指标中排除类库或代码文件?我找不到很好的资源,因为他们似乎都专注于代码覆盖,可以在.runsettings文件中设置.

我希望在测试项目的代码行上没有警告的构建.

c# code-metrics visual-studio visual-studio-2013 runsettings

4
推荐指数
1
解决办法
1207
查看次数