我已经阅读了一些关于MStest的TestContext的信息,可以相应地使用它。
现在我关于TestContext的任务有点不同,并且让人感到困惑。它可以起作用。
与三个文件相关的情况:
在testcase.cs文件中,TestContext属性位于[Test Class]中。但在[TestMehtod]中,我不想直接使用类似testContextInstance.WriteLine(“WRITE TEST PARAMETERS”),它将被放入另一个名为TestLogger.cs的文件中。
[TestClass]
public class Test1 : BaseTestTemplate
{
public TestContext TestContext { get; set; }
public static void FixtureSetUp(TestContext testContext)
{
}
public static void FixtureTearDown(TestContext testContext)
{
}
[TestInitialize]
public override void SetUp()
{
}
[TestMethod]
{
Logger.BeginSection("WRITE TEST PARAMETERS"); // instead of testContextInstance.WriteLine("WRITE TEST PARAMETERS");
}
}
在AssemblySetup.cs文件的[AssemblyInitialize]中,公共静态void AssemblySetUp(TestContext testContext)完成,它包含一个函数InitializeLogging();在此函数中,我使用Logger.RegisterLogChannel(LogChannel.TestLog,new TestLogger())初始化TestLogger。
[TestClass]
public static class AssemblySetUpClass
{
public static void InitializeLogging()
{
string testContext = "";
Logger.RegisterLogChannel(LogChannel.TestLog, new TestLogger(testContext));
}
[AssemblyInitialize]
public static void AssemblySetUp(TestContext testContext)
{
InitializeLogging();
}
}
我在TestLogger.cs中添加了testContextInstance.WriteLine(title)。但在debug中,testContextInstance始终为null。
public sealed class TestLogger : LoggerBase
{
private TestContext testContextInstance;
public TestLogger(string testContext)
{
}
public override void BeginSection(string title)
{
testContextInstance.WriteLine(title);
base.BeginSection(title);
}
}
我正在尝试修改Logger.RegisterLogChannel(LogChannel.TestLog,新的TestLogger(testContext))目的是告诉TestLogger,将调用testContext。在TestLogger中,我还添加了私有的TestContext testContextInstance;和公共TestLogger(字符串testContext)
问题仍然是相同的,在警告它说,testContextInstance永远不会被赋值,将始终具有其默认值null
我希望你能理解我的问题。请给我一些关于如何处理它的想法或解决方案,非常感谢。
答案 0 :(得分:0)
你有这个代码:
private TestContext testContextInstance;
public TestLogger(string testContext)
{
}
TestLogger
的构造函数是否真的应该为空?问题可能很简单,因为您从未将参数testContext
分配给构造函数体中的任何内容。我假设您应该将它分配给构造函数中的testContextInstance
。
private TestContext testContextInstance;
public TestLogger(string testContext)
{
testContextInstance = testContext;
}