如何制作 .dll 并使用 NUnit 运行它?

Posted

技术标签:

【中文标题】如何制作 .dll 并使用 NUnit 运行它?【英文标题】:How to make a .dll and run it with NUnit? 【发布时间】:2014-09-28 16:19:57 【问题描述】:

我对 Windows 应用商店应用程序编程完全陌生, 所以我也是 Visual Studio Express 的新手。

我的目标是测试一个简单的类方法。 正如here 提到的,Express 版本没有任何内置的单元测试。 在这个thread 中,Rafal 提供了一个solution。

我完全按照描述的那样做,所以我的外部工具如下所示:

当我执行它时(Tools --> "Execute NUnit"),Nunit 启动并出现 NUnit 的 Gui。但是突然出现这个异常:

在异常详情中:

System.IO.FileNotFoundException...

   at NUnit.Util.ProjectService.WrapAssembly(String assemblyPath)

   at NUnit.Util.ProjectService.ConvertFrom(String path)

   at NUnit.Util.ProjectService.LoadProject(String path)

   at NUnit.Util.TestLoader.LoadProject(String filePath, String configName)

我的项目文件夹结构如下:

测试类在“WebTest.Shared”中。

我想我需要一个 .dll 才能在 NUnit 中运行,正如 Jon here 所提到的。 那么,如何从我的项目中制作一个 dll 以使用 NUnit 运行它? 谁能指导我解决这个问题? (请一步一步来)

编辑:

我在ChrisMidea工作后,没有“$BinDir$TargetName.dll/run”块出现异常(异常细节与之前相同):

编辑号 2:

我已经设置了这些值:

标题:执行 NUnit

命令: D:\Path\To\NUnit\bin\nunit.exe

参数: $(BinDir)$(TargetDir)$(TargetExt)/run

初始目录: $(BinDir)

编辑号 3:

关闭并重新打开 VS Express 后 我得到了这个新的例外:

在 NUnit 异常详情中:

System.ApplicationException:无法在程序集中找到测试

System.ApplicationException...

第 4 号编辑

这是我的测试类(StringUtilitiesTest.cs):

using System;
using System.Collections.Generic;
using System.Text;
using WebappTest.Shared.Utilities;
using NUnit.Framework;

namespace WebappTest.UnitTest



    [TestFixture]
    public class StringUtilitiesTest
    

        [Test]
        public void TransferFunds()
        

            Assert.AreEqual("Hello", StringUtilites.getString("Hello"));

        
    

【问题讨论】:

【参考方案1】:

在外部工具中:

您是否尝试将参数框中的大括号 替换为普通大括号 ()?

【讨论】:

能否请您发布“Argumente”字段的内容? 嗯...我不知道是什么导致了您的问题。从您到目前为止所说的内容来看,我猜 NUnit 找不到包含您的测试的程序集,因为由于某种原因,Visual Studio 环境变量(例如 $(BinDir) )不起作用或包含错误信息。如果我正确地输入包含您的测试的程序集的绝对路径(如果我没听错的话,webappTest.shared)到参数中应该至少可以工作。你可以试试吗? 您的测试类中似乎缺少一个属性。你也可以在这里发布测试课程吗? 看起来是正确的。恐怕我没有更多的想法,抱歉。【参考方案2】:

Visual Studio 2017 Express(最终的 Express 版本)包括测试资源管理器。将 NUnit3TestAdapter NuGet 添加到您的项目中,测试资源管理器应该会发现您的测试。

【讨论】:

以上是关于如何制作 .dll 并使用 NUnit 运行它?的主要内容,如果未能解决你的问题,请参考以下文章

使用 NUnit 时,我应该如何在运行时修改 app.config?

NUnit3 测试不在 TFS 构建上运行

从 NuGet 安装 NUnit 后,如何强制 TestDriven.Net 使用 NuGet 引用的 NUnit dll?

如何使用 Windows 身份验证和 Firefox 运行 Selenium NUnit 测试?

在 Rider 中为 .NET Core 运行 nUnit 测试

寻找 assembly-name.dll.config 的 nUnit 测试