代码之家  ›  专栏  ›  技术社区  ›  Matthew Wherry

NUnit运行测试失败

  •  1
  • Matthew Wherry  · 技术社区  · 6 年前

    我的设置

    CoreExtensions.Host.InitializeService();
    package = new TestPackage(pathToTestDll);
    builder = new TestSuiteBuilder();
    suite = builder.Build(package);
    

    foreach (NUnitTestMethod t in tests)
    {
        try
        {
            var res = t.RunTest();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }
    

    我将此作为异常堆栈:

    在System.Reflection.RuntimeMethodInfo.CheckConsistency(Object target)at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj,BindingFlags invokeAttr,Binder Binder,Object[]parameters,CultureInfo culture)at System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder Binder,Object[]parameters,CultureInfo culture)at,位于NUnit.Core.Reflect.InvokeMethod(MethodInfo方法,Object fixture,Object[]参数)的System.Reflection.MethodBase.Invoke(Object obj,Object[]参数),位于NUnit.Core.TestMethod.RunTestCase(TestResult TestResult)

    nunit.core和nunit.core.interfaces在我的测试包和运行包中是相同的文件

    1 回复  |  直到 6 年前
        1
  •  1
  •   Charlie    6 年前

    您初始化CoreServices,但不使用它们,因为您运行的测试级别非常低。使用内部类(不用于一般用途)总是有风险的。但是如果你把它们零零碎碎地放在一起,而不是像NUnit那样使用它们,风险就更大了。

    如果您想以编程方式运行测试(这可能不是一个好主意,但似乎是您想要做的),那么我建议您选择并使用一个NUnit运行程序来为您处理细节。从SimpleTestRUnner、RemoteTestRunner或TestDomain中进行选择,具体取决于您希望测试运行的方式和位置。

    方式 比你正在做的更高级别)并且只在测试所在的位置运行测试。请注意,除非已将所有测试文件、它们的引用和NUnit文件复制到同一目录中,否则不能在同一AppDomain(远程和简单)中运行测试。