在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的测试框架中执行此操作?
我将特定测试方法的测试数据保存在与函数相同的文件夹中.我以前在每个函数调用中都有相同的函数调用[TestMethod],ClearAllAndLoadTestMethodData()它确定了方法名称StackTrace.现在,我将此功能移至[TestInitialize].如何找到即将执行的方法的名称?
我想TestContext提供这个.我可以通过[AssemblyInitialize()]首次运行访问它,它的属性Name设置为testmethod的名称.但是,稍后这不会改变(如果我将对象保存在静态字段中).
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中的一个错误.无法理解为什么这么简单的东西会炸毁它?!?
我正在尝试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
我正在使用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
我有一些项目的解决方案,我们在这些解决方案中没有单元测试项目.但是,Visual Studio 2017仍在尝试发现单元测试并减慢我们的过程.
我查看了runsettings xml文件,但没有任何内容可以禁用它
任何想法我们如何为我们的一些解决方案转变这些不必要的东西?
谢谢
我想要做的是:
我该怎么做这样的事情?
是否已经有任何框架来处理这个问题(即在更改初始化时多次运行给定的测试)?你能否提出任何可以做到这一点的设计或想法?
我知道单元测试框架的工作原理.我自己使用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次.其余的我知道我可以建立一旦这是可能的
我正在编写一个自定义Visual Studio 测试适配器,并想知道:我该如何调试它?现在我正在遵循以下步骤:
vstest.console.exe dummy.project.with.tests.dll有没有办法在VS2013中调试我的测试适配器,因为它正在运行测试?
注意:我的研究在这篇文章中发现了一条评论,说使用Debugger.Launch() - 但我不知道如何激活它以实现我想要的.
我们已经并行运行了多年的单元测试(有和没有代码覆盖),遵循以下说明: 如何并行运行单元测试(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
我有一个带有单元测试助手类的库。我在这个项目中引用了 NUnit,但现在 Visual Studio 认为这个项目是一个测试项目,并抱怨没有发现任何测试。该项目并不是一个测试项目,只是一个引用 NUnit 的常规 .net 标准库。
我想“说服”视觉工作室这不是一个测试项目。有任何想法吗?
技术细节:该项目是一个.Net Standard 2.0项目,我引用了以下NuGet包:
我使用 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)
要重现该问题:
现在请注意,视觉工作室将项目图标更改为测试项目。
帮助我找到一种方法,让 Visual Studio 不认为该项目是一个测试项目,并确保 VS 不会尝试在该项目中发现测试。
编辑:查看“测试”输出我发现:
[16/09/2018 10:12:55 Warning] Exception NUnit.Engine.NUnitEngineException, …Run Code Online (Sandbox Code Playgroud)