0

为了在 NUnit 中使用调试模式,我添加了一个在线模板“NUnit 测试应用程序”。因此,当我添加一个新项目时,我选择 NUnit 测试应用程序而不是类库。创建项目时,会自动添加两个 .cs 文件。我添加了一个简单的程序来检查调试模式,它显示了一个错误。如何纠正这个错误?谢谢。

TypeInitializationException was unhandled.

错误发生在

int returnCode = NUnit.ConsoleRunner.Runner.Main(my_args);

自动添加的文件是 Program.cs

namespace NUnitTest1
{
    class Program
    {
       [STAThread]
       static void Main(string[] args)
       {
         string[] my_args = { Assembly.GetExecutingAssembly().Location };
         int returnCode = NUnit.ConsoleRunner.Runner.Main(my_args);

         if (returnCode != 0)
            Console.Beep();
       }
    }
 }

测试夹具.cs

namespace NUnitTest1
{
   [TestFixture]
   public class TestFixture1
    {
      [Test]
      public void TestTrue()
      {
        Assert.IsTrue(true);
      }

    // This test fail for example, replace result or delete this test to see all tests pass
      [Test]
      public void TestFault()
      {
        Assert.IsTrue(false);
      }
    }
  }

我向它添加了一个新的项目类并尝试调试

namespace NUnitTest1
{
   [TestFixture]
    public class Class1
    {
        IWebDriver driver = null;
        [SetUp]
        public void setup()
        {
           //set the breakpoint here
            driver = new FirefoxDriver();
        }
        [Test]
        public void test1()
        {
            driver.Navigate().GoToUrl("http://www.google.com/");                
        }
        [TearDown]
        public void quit()
        {
            driver.Quit();
        }
      }
   }
4

3 回答 3

3

正如@Arran 已经提到的,你真的不需要做这一切。但是您可以使调试 NUnit 测试变得更加容易。

在 Visual Studio 中使用 F5 调试单元测试

与其使用 Visual Studio 执行 NUnit 运行程序并附加到进程,不如配置您的测试项目以启动 NUnit 测试运行程序并调试您的测试。您所要做的就是按照以下步骤操作:

  1. 打开测试项目的属性
  2. 选择调试选项卡
  3. Start action设置为Start external program并指向 NUnit runner
  4. 设置命令行参数
  5. 保存项目属性

你完成了。点击F5,您的测试项目将以 NUnit 运行程序执行的调试模式启动。

您可以在我的博文中了解这一点。

于 2013-06-06T14:49:25.257 回答
1

你要付出太多的努力才能完成这件事。

我通常做的是去创建一个新的“类库”项目。然后我将 nunin-framework.dll 的引用添加到我的项目中。

您可以按如下方式定义您的类:

[TestFixture]
public class ThreadedQuery
{
    [Test]
    public void Query1()
    {

    }
}

此处描述了 TestFixture 属性

然后,您可以继续使用上述公共方法创建多个测试。

有 3 件事情对于让它发挥作用非常重要。

  1. 您需要将项目文件上的调试器设置为外部可执行文件,即 nunint.exe
  2. 传递的参数必须是程序集的名称。
  3. 如果您使用的是 .net 4.0,则需要在 nunint.exe.config 中指定。如果不这样做,您将无法使用 VS 进行调试。请参阅下面的配置片段:

    <startup useLegacyV2RuntimeActivationPolicy="true">
        <!-- Comment out the next line to force use of .NET 4.0 -->
        <!--<supportedRuntime version="v2.0.50727" />-->
        <supportedRuntime version="v4.0.30319" />
        <supportedRuntime version="4.0" />
    </startup>
    

希望这会有所帮助

于 2013-08-08T04:50:16.367 回答
1

你根本不需要做这一切。

打开 NUnit GUI,打开你编译的测试。在 Visual Studio 中,使用该Attach to Process功能附加 nunit-agent.exe。

在 NUnit GUI 中运行测试。VS 调试器将从那里获取它。

于 2013-06-04T14:52:48.873 回答