我正在使用 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/