标签: vs-unit-testing-framework

783
推荐指数
14
解决办法
47万
查看次数

为什么我的Visual Studio单元测试中的每个测试都会触发TestInitialize?

我正在使用Visual Studio 2010 Beta 2.我有一个[TestClass],有一个[TestInitialize],[TestCleanup]有几个[TestMethods].

每次运行测试方法时,都会运行初始化和清理方法!

我的印象中[TestInitialize][TestCleanup]应只运行一次,每次当地试运行.

那是对的吗?如果没有,这样做的正确方法是什么?

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

148
推荐指数
3
解决办法
6万
查看次数

如何在MSTest中运行具有多个参数的测试方法?

NUnit有一个名为Values的功能,如下所示:

[Test]
public void MyTest(
    [Values(1,2,3)] int x,
    [Values("A","B")] string s)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这意味着测试方法将运行6次:

MyTest(1, "A")
MyTest(1, "B")
MyTest(2, "A")
MyTest(2, "B")
MyTest(3, "A")
MyTest(3, "B")
Run Code Online (Sandbox Code Playgroud)

我们现在正在使用MSTest,是否有任何相同的功能,以便我可以使用多个参数运行相同的测试?

[TestMethod]
public void Mytest()
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

c# nunit unit-testing mstest vs-unit-testing-framework

129
推荐指数
7
解决办法
12万
查看次数

TestInitialize与ClassInitialize

在MSTest中TestInitializevs 之间有什么区别ClassInitialize?每个人的优点是什么?

我的印象是TestInitialze应该每次都进行EACH测试吗?那是对的吗?这ClassInitialize将每次运行任何类的新实例?

c# mstest vs-unit-testing-framework

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

MSTest:未运行任何测试,因为未加载任何测试或禁用所选测试

我有一个具有以下结构的ac#解决方案:

mySolution
  myProject
  myProject.MSTests
    References
      Microsoft.VisualStudio.QualityTools.UnitTestFramework
    sutMSTests.cs
Run Code Online (Sandbox Code Playgroud)

sutMSTests.cs:

[TestClass()] 
public class sutMSTests
{
    [TestMethod]
    public void MyTest0()
    {
        Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(4, 2 + 2);
    } 
}
Run Code Online (Sandbox Code Playgroud)

当我尝试通过Test,Run,All Tests In Solution运行测试时,我在VS2008状态行上得到以下信息:

未运行任何测试,因为未加载任何测试或禁用所选测试.

测试,Windows,测试视图显示没有测试.

注意:我手动创建了测试(适用于xUnit.net),而不是使用Microsoft的向导.

我将手工创建的MSTest设置与我使用向导生成的另一个测试设置进行了比较,它们看起来非常相似.

问题:上述错误消息的最可能原因是什么?

编辑2010-02-25: 更多信息:
我右键单击Solution Items文件夹,然后选择Add,New Project,键入Test Projects,Test Documents :: Visual Studio Test Project模板.

新项目的默认设置不会检测并传递测试"TestMethod1".
但是,我的测试没有显示...所以我将我的测试方法复制并粘贴到默认的测试测试项目"TestProject1"中.

我的测试是在"TestProject"中检测到的,但不是在原始位置.

我仔细比较了"TestProject1"的文件,组织和设置与我手工创建的测试项目.

此时,我猜测某些设置是由Visual Studio Test Project模板制作的,不易检测到.

imo,手动创建测试项目就像使用Visual Studio Test Project模板创建测试项目一样容易.

请注意:我并不是说我反对使用Visual Studio Test Project模板; 对我来说,我喜欢理解窗帘背后是什么,因为这让我成为了一个更好的程序员.

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

63
推荐指数
5
解决办法
6万
查看次数

如何将VS测试处理器体系结构默认为x64?

我依赖于为x64编译的混合模式程序集.因为我的构建中不需要警告,所以我的解决方案中的所有项目都直接针对x64 - 它们不是任何CPU.

为了让我的x64单元测试正常工作,我发现每次启动Visual Studio时都必须手动将Visual Studio单元测试默认处理器体系结构更改为x64.这很容易,但很乏味.

有没有办法让VS坚持这个设置,这样我每次都不必这样做?

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

46
推荐指数
1
解决办法
5086
查看次数

Visual Studio - 突然无法调试测试

我不确定我做了什么,但突然之间,我的Visual Studio 2012将不会调试任何测试.

如果我从Test Explorer中选择一个测试并告诉它运行,它只是在Test Output窗口输出:

> ------ Discover test started ------
> ========== Discover test finished: 29 found (0:00:01.3371755) ==========
> ------ Run test started ------ Process with an Id of -1 is not running.
> ========== Run test finished: 0 run (0:00:01.4711861) ==========
Run Code Online (Sandbox Code Playgroud)

这是什么意思?!执行此操作几次后,错误更改为:

The Operation was Cancelled
Run Code Online (Sandbox Code Playgroud)

我当然没有这样做.

它是在列表中的每个测试中执行此操作.

但是,我可以运行测试没有问题,他们通过...但我无法调试测试.

我可以做些什么?我没有主动进入任何设置并改变任何东西,也许是某个地方的流浪点击,但在哪里?

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

45
推荐指数
10
解决办法
4万
查看次数

未调用基于单元测试的类中的ClassInitialize属性

我在TestBase类中添加了这些方法:

[ClassInitialize]
public static void InitializBeforeAllTests()
{
}
Run Code Online (Sandbox Code Playgroud)

但是当我在Debug中运行一个单元测试Test1():

[TestClass]
public class TestMapping : TestBase
{
    [TestMethod]
    public void Test1()
    {
    }
Run Code Online (Sandbox Code Playgroud)

TestBase.InitializBeforeAllTests()永远不会调用该方法.为什么?

c# vs-unit-testing-framework

42
推荐指数
4
解决办法
2万
查看次数

标有TestInitialize和TestCleanup的类未执行

我一直在努力争取这个,希望它会帮助别人.

虽然创建使用MSTEST单元测试我发现我在每个测试重复相同的码,并发现了几个方便的属性(的TestInitialize,TestCleanup,ClassInitialize,和ClassCleanup).

据推测,当您使用这些属性之一标记方法时,它应该自动执行(在每次测试之前,在每次测试之后,在所有测试之前,以及在所有测试之后).令人沮丧的是,这没有发生,我的测试失败了.如果从标有TestMethodattribute 的类中直接调用这些方法,则测试成功.显然他们不是自己执行的.

以下是我使用的一些示例代码:

[TestInitialize()]
private void Setup()
{
    _factory = new Factory();
    _factory.Start();
}
Run Code Online (Sandbox Code Playgroud)

那为什么不执行?

c# mstest vs-unit-testing-framework

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

如何在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万
查看次数