标签: vs-unit-testing-framework

Visual Studio单元测试 - 像Nunit这样的多个案例

Nunit中,可以针对多个案例重用测试方法.

[TestCase(12,3,4)]
[TestCase(12,2,6)]
[TestCase(12,4,3)]
public void DivideTest(int n, int d, int q)
{
  Assert.AreEqual( q, n / d );
}
Run Code Online (Sandbox Code Playgroud)

我如何在Visual Studio的测试框架中执行此操作?

unit-testing mstest visual-studio vs-unit-testing-framework

9
推荐指数
1
解决办法
4109
查看次数

找出要在MS TestInitialize中执行的下一个测试方法

我将特定测试方法的测试数据保存在与函数相同的文件夹中.我以前在每个函数调用中都有相同的函数调用[TestMethod],ClearAllAndLoadTestMethodData()它确定了方法名称StackTrace.现在,我将此功能移至[TestInitialize].如何找到即将执行的方法的名称?

我想TestContext提供这个.我可以通过[AssemblyInitialize()]首次运行访问它,它的属性Name设置为testmethod的名称.但是,稍后这不会改变(如果我将对象保存在静态字段中).

c# unit-testing vs-unit-testing-framework

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

Visual Studio 2012 - 调用目标抛出了异常.

Visual Studio 2012中的简单项目在尝试加载测试资源管理器时导致以下错误:

------ Discover test started ------
Exception has been thrown by the target of an invocation.
========== Discover test finished: 1 found (0:00:00.152) ==========
Run Code Online (Sandbox Code Playgroud)

这是我的测试项目:

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace MyApp
{
    [TestClass]
    public class MyTests
    {   
        [TestMethod]
        public void Test()
        {
            var foo = 1;
            Assert.AreEqual(1, foo);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

测试资源管理器由于某种原因没有发现我的测试.它可能是在我的问题的顶部提出异常.有谁知道这是否是Visual Studio 2012中的一个错误.无法理解为什么这么简单的东西会炸毁它?!?

vs-unit-testing-framework visual-studio-2012

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

添加Fakes Assembly选项缺失

我正在尝试Microsoft Fakes在我的解决方案中设置的单元测试项目中运行并运行.

由于某种原因,Add Fakes Assembly缺少选项,这意味着我无法创建程序集的模型.由于这是添加Microsoft.QualityTools.Testing.Fakes程序集的唯一替代方法,因此我也无法使用该Shim功能.

我最近安装Visual Studio 2012 Professional并安装了更新3,这是第一次进入Visual Studio 2012.我没有改变任何设置.虽然我已安装ReSharper,但这可能是罪魁祸首吗?

vs-unit-testing-framework microsoft-fakes visual-studio-2012

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

如何在F#中保持方法返回类型'void'?

我正在使用F#,Visual Studio单元测试框架(又名MSTest)和FluentAssertions为我的F#库编写单元测试.

测试方法应该具有void或Task的返回类型.在C#中这很容易:

[TestMethod]
public void TestMethod1()
{
    false.Should().BeFalse();
}
Run Code Online (Sandbox Code Playgroud)

在F#我有以下内容:

[<TestMethod>]
member this.TestMethod1() =
    false.Should().BeFalse(null)
    |> ignore
Run Code Online (Sandbox Code Playgroud)

否则返回类型更改为,FluentAssertions.PrimitivesBooleanAssertions因此Test Runner看不到它.

如何避免|> ignore每次测试结束?

f# unit-testing void vs-unit-testing-framework fluent-assertions

8
推荐指数
2
解决办法
4075
查看次数

如何在Visual Studio 2017中禁用测试发现?

我有一些项目的解决方案,我们在这些解决方案中没有单元测试项目.但是,Visual Studio 2017仍在尝试发现单元测试并减慢我们的过程.

https://imgur.com/a/89Vt1P6

我查看了runsettings xml文件,但没有任何内容可以禁用它

https://docs.microsoft.com/en-us/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file

任何想法我们如何为我们的一些解决方案转变这些不必要的东西?

谢谢

unit-testing vs-unit-testing-framework visual-studio-2017

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

Visual Studio C#单元测试 - 使用各种/多个测试初始化​​运行单元测试,多次运行相同的单元测试?

我想要做的是:

  1. 创建一堆单元测试.
  2. 创建各种不同的模拟初始化/组合,输入变量等.
  3. 基于某些参数,针对一组此类初始化运行每个给定的单元测试.

我该怎么做这样的事情?

是否已经有任何框架来处理这个问题(即在更改初始化时多次运行给定的测试)?你能否提出任何可以做到这一点的设计或想法?

我知道单元测试框架的工作原理.我自己使用NUnit和Rhino嘲笑.

下面显示的是我需要的一个例子.

[Test Initialize]
Setup( <-possible parameter-> )

[Test Method]
TestA()
Run Code Online (Sandbox Code Playgroud)

现在我希望TestA()多次运行.每次Test initialize都会选择另一个初始化组合.

更多澄清

让我们假设测试需要变量A,B,C.它们中的每一个都是非常复杂的对象,最终结果是可以形成大量的组合.所以我希望以某种方式我可以创建一个测试初始化​​,可以迭代这样的组合列表,所以它会初始化它们,运行TESTA,返回列表中的下一个初始化,再次运行TESTA等等,直到列表用完了.接下来,它为TESTB选择另一个列表,并再次遵循此过程.

至少我希望有一些能力能够运行给定的TEST功能n次.其余的我知道我可以建立一旦这是可能的

c# unit-testing visual-studio vs-unit-testing-framework

7
推荐指数
2
解决办法
7043
查看次数

Visual Studio 2013自定义测试适配器:如何调试?

我正在编写一个自定义Visual Studio 测试适配器,并想知道:我该如何调试它?现在我正在遵循以下步骤:

  1. 在我的适配器代码中添加一些logger.SendMessage()日志行.
  2. 构建适配器
  3. 将上面步骤2中的dll复制到Test Extensions文件夹(Common7\IDE\CommonExtensions\Microsoft\TestWindow\Extensions)
  4. 从控制台运行一些测试: vstest.console.exe dummy.project.with.tests.dll
  5. 查看日志输出

有没有办法在VS2013中调试我的测试适配器,因为它正在运行测试?

注意:我的研究在这篇文章中发现了一条评论,说使用Debugger.Launch() - 但我不知道如何激活它以实现我想要的.

c# vs-unit-testing-framework visual-studio-extensions

7
推荐指数
1
解决办法
1063
查看次数

Visual Studio 2017 15.5并行单元测试代码覆盖率

我们已经并行运行了多年的单元测试(有和没有代码覆盖),遵循以下说明: 如何并行运行单元测试(MSTest)? 在这里: 并行运行单元测试

但是,Visual Studio 2017的最新更新(版本15.5.0或15.5.1及更高版本)似乎打破了这一点,每当我尝试使用自定义测试设置文件并执行代码覆盖时,我现在都会收到以下错误分析:

[12/29/2017 1:35:10 PM Error] Microsoft.VisualStudio.TestPlatform.ObjectModel.SettingsException: Data collectors configured via run settings are not supported with embedded test settings. Please see https://aka.ms/vstest-configure-datacollector for more information. Run settings:
Run Code Online (Sandbox Code Playgroud)

我已在另一个系统上更新,重新启动并验证了此问题.

当恢复到默认设置(没有自定义测试设置文件)并使用VS 2015更新2中引入的"并行运行测试"按钮时,它似乎只是忽略按钮设置并连续运行测试(无论您是否进行代码覆盖) ).

我查看了错误中提供的链接(https://github.com/Microsoft/vstest-docs/blob/master/docs/analyze.md),但它没有帮助澄清问题,除了可能表明是的,改变了.

如果我关闭自定义设置文件,测试运行得很好,但运行时间大约是7倍,这非常令人沮丧.

如何在VS 2017 15.5+中使用并行单元测试执行?

c# unit-testing vs-unit-testing-framework visual-studio-2017

7
推荐指数
0
解决办法
1196
查看次数

如何使我的 Visual Studio 2017 项目不是测试项目,同时仍然引用 NUnit

我有一个带有单元测试助手类的库。我在这个项目中引用了 NUnit,但现在 Visual Studio 认为这个项目是一个测试项目,并抱怨没有发现任何测试。该项目并不是一个测试项目,只是一个引用 NUnit 的常规 .net 标准库。

我想“说服”视觉工作室这不是一个测试项目。有任何想法吗?

技术细节:该项目是一个.Net Standard 2.0项目,我引用了以下NuGet包:

  • 最小起订量 4.10.0
  • 起订量.AutoMock 1.2.0.111
  • NUnit 3.10.1

我使用 Visual Studio 2017 Enterprise 版本 15.8.4

该库的用途示例:

  public abstract class AutoMockerTestBase
  {
     protected AutoMocker AutoMocker { get; private set; }

     [SetUp]
     public virtual void SetUp()
     {
        AutoMocker = new AutoMocker(MockBehavior.Strict);
     }

     [TearDown]
     public virtual void TearDown()
     {
        AutoMocker.VerifyAll();
     }
  }
Run Code Online (Sandbox Code Playgroud)

要重现该问题:

  • 将 .net standard2.0 类库项目添加到解决方案。
  • 参考 NUnit

现在请注意,视觉工作室将项目图标更改为测试项目。

帮助我找到一种方法,让 Visual Studio 不认为该项目是一个测试项目,并确保 VS 不会尝试在该项目中发现测试。

编辑:查看“测试”输出我发现:

[16/09/2018 10:12:55 Warning] Exception NUnit.Engine.NUnitEngineException, …
Run Code Online (Sandbox Code Playgroud)

c# nunit vs-unit-testing-framework visual-studio-2017

7
推荐指数
1
解决办法
1157
查看次数