标签: testcontext

了解MSTest TestContext

使用MSTest,我需要从[TestInitialize]方法中获取当前测试的名称.您可以从TestContext.TestName酒店获取此信息.

我发现TestContext传入[ClassInitialize]方法的静态与声明为公共属性的静态(并由测试运行器设置)之间的行为有意想不到的差异.

请考虑以下代码:

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

namespace TestContext.Tests
{
    [TestClass]
    public class UnitTest1
    {
        public TestContext TestContext { get; set; }

        private static TestContext _testContext;

        [ClassInitialize]
        public static void SetupTests(TestContext testContext)
        {
            _testContext = testContext;
        }

        [TestInitialize]
        public void SetupTest()
        {
            Console.WriteLine(
                "TestContext.TestName='{0}'  static _testContext.TestName='{1}'",
                TestContext.TestName,
                _testContext.TestName);
        }

        [TestMethod] public void TestMethod1() { Assert.IsTrue(true); }

        [TestMethod] public void TestMethod2() { Assert.IsTrue(true); }

        [TestMethod] public void TestMethod3() { Assert.IsTrue(true); }
    }
} …
Run Code Online (Sandbox Code Playgroud)

c# mstest testcontext

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

单元测试TestContext多次调用

我有一个测试方法,它调用2个子测试方法.子方法都是从XML文件驱动的数据.如果我运行每个子方法,它们运行良好且成功.但是,当我运行主测试方法(两个子方法的调用者)时,它发现TestContext.DataConnection和TestContext.DataRow为null.

    private TestContext testContext;
    public TestContext TestContext
    {
        get { return testContext; }
        set { testContext = value; }
    }
    [TestMethod]
    public void SaveEmpty_Json_LocalStorage()
    {
        // Testing JSON Type format export and save
         SetWindowsUsers();
        // Add Network Information
        SetWifiInformation();

        // More logic and assertions here.
        // More logic and assertions here.
        // More logic and assertions here.
    }

    [TestMethod]
    [DeploymentItem("input.xml")]
    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML",
               "input.xml",
               "User",
                DataAccessMethod.Sequential)]
    public void SetWindowsUsers()
    {
      Console.WriteLine(TestContext.DataRow["UserName"].ToString())
      // MORE LOGIC and Asserts  
    }

    [TestMethod]
    [DeploymentItem("input.xml")]
    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML",
               "input.xml",
               "WifiList", …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing testcontext

5
推荐指数
1
解决办法
886
查看次数

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
查看次数

Azure Pipelines - Visual Studio Test 不发布 TestContext.WriteLine 的结果

我们正在使用 Azure DevOps 来运行使用 Visual Studio Test 运行测试的构建。

一切工作正常,Console.WriteLine行正在写入Standard Console Output.log,但TestContext.WriteLine没有出现在详细报告中。

相同的行确实出现在Visual Studio 中的Output链接中Test Explorer


环境信息

构建解决方案: Visual Studio 2017`

VS测试:最新

测试框架: MSTest.TestFramework 1.3.2

测试适配器: MSTest.TestAdapter 1.3.2


重申一下,TestContext正在正确实例化,我们可以检查本地计算机上的输出 ( Visual Studio 2015 Update 3),但是输出不会发布到 Azure Pipelines 版本

谢谢,问候

mstest testcontext vstest azure-devops azure-pipelines

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

TestContext 定义的目录的用途是什么?

TestContext这些是在class 及其各自的定义中定义的(未弃用的)目录。

DeploymentDirectory

  • 获取为测试运行部署的文件的目录。此属性通常包含TestRunDirectory的子目录。

ResultsDirectory

  • 获取包含测试结果的顶级目录以及测试运行的测试结果目录。这通常是TestRunDirectory的子目录。

TestResultsDirectory

  • 获取测试结果文件的目录。

TestRunDirectory

  • 获取包含部署文件和结果文件的测试运行的顶级目录。

TestRunResultsDirectory

  • 获取测试运行结果文件的顶级目录。此属性通常包含ResultsDirectory的子目录。

我发现他们很模棱两可。每个目录都有一些可靠的示例用法吗?例如,如果我要测试文件 I/O,如果我想创建临时lorem ipsum文件,那么其中任何一个都可以吗?

.net c# testing unit-testing testcontext

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