我目前正在编写一个MutationTesting框架。代码几乎已经完成,但是有一小部分问题(在我花费了半天的时间后)无法解决:
通过反射,我想要执行"TestClass"类中的"TestMethod"方法。"TestClass"所在的项目引用了一个程序集,我们称之为"Proband.dll"。
"TestMethod"会创建一个某种类型的对象,并在该对象上执行方法。
为了澄清一下: - TestClass是包含单元测试的类。 - TestMethod是一个单元测试。 - Proband.dll包含待测试的方法/类。
在执行TestMethod之前,我已经成功地反汇编、突变和重新组装了Proband.dll。因此,现在我有了一个新的"Proband.dll",应该由TestClass来使用!
问题是TestClass已经处于执行过程中。我在思考是否可以创建一个AppDomain,在其中加载新的Proband.dll,并在这个新的AppDomain中执行TestMethod。
我已经创建了这个AppDomain,并成功地将新的Proband.dll加载到其中,但是我不知道如何在这个新的AppDomain中执行TestMethod。而且我也不知道这是否会"替换"测试方法的旧Proband.dll。
以下是我的TestClass:
通过反射,我想要执行"TestClass"类中的"TestMethod"方法。"TestClass"所在的项目引用了一个程序集,我们称之为"Proband.dll"。
"TestMethod"会创建一个某种类型的对象,并在该对象上执行方法。
为了澄清一下: - TestClass是包含单元测试的类。 - TestMethod是一个单元测试。 - Proband.dll包含待测试的方法/类。
在执行TestMethod之前,我已经成功地反汇编、突变和重新组装了Proband.dll。因此,现在我有了一个新的"Proband.dll",应该由TestClass来使用!
问题是TestClass已经处于执行过程中。我在思考是否可以创建一个AppDomain,在其中加载新的Proband.dll,并在这个新的AppDomain中执行TestMethod。
我已经创建了这个AppDomain,并成功地将新的Proband.dll加载到其中,但是我不知道如何在这个新的AppDomain中执行TestMethod。而且我也不知道这是否会"替换"测试方法的旧Proband.dll。
以下是我的TestClass:
[TestClass()]
public class TestClass
{
[TestInitialize()]
public void MyTestInitialize()
{
// code to perform the mutation.
// From here, the "TestMethod" should be called with
// the new "Proband.dll".
}
[TestMethod()]
public void TestMethod()
{
// test code calling into Proband.dll
}
}
有人知道如何实现这个吗?或者有任何线索或关键词吗?
谢谢, Christian