C# MSTest 测试隔离

标签 c#

我正在使用 MSTest 编写调用 DLL 的集成测试。我需要根据测试加载具有不同值的 DLL,但 DLL 中的值在测试运行后仍然存在。

有没有办法隔离每个测试,以便它们各自在自己的进程或堆栈中运行?

添加代码:

[TestClass]
public class TestClass1
{
    [TestMethod]
    public void Test1()
    {
        LoadDLL(1);
        Assert.AreEqual(1, ReadDLL());
    }

    [TestMethod]
    public void Test2()
    {
        Assert.AreEqual(1, ReadDLL());
    }
}

如果 Test1 先运行,则 Test2 会通过,即使应该需要调用 LoadDLL()。相反,如果 Test2 先运行,它将失败。

理想情况下,LoadDLL 会进入 [TestInitialize()] block 。

最佳答案

@usr1 appdomain 似乎不再存在于 .nrt 核心中,您必须使用程序集加载上下文。试试这个,然后尝试删除上下文 http://www.michael-whelan.net/replacing-appdomain-in-dotnet-core/

关于C# MSTest 测试隔离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50472742/

相关文章:

c# - 计算字符串生成器中的单词数

C#、WPF、将 List<string> 绑定(bind)到 DataGrid

c# - 通过 Tasks C# 动态搜索中断

c# - 将托管事件处理程序传递给 Linux 中的非托管代码

c# - 如何在 UWP Composition API 中组合多种效果

c# FileStream Read 与 StreamReader EndOfStream 有问题

c# - 使用 C# 检索电子邮件?

c# - 从代码隐藏中调用 JavaScript 函数

c# - 解析 WCF ProtocolException 时出现 System.ServiceModel.CommunicationException

c# - 大于零的十进制验证