问题标签 [nunit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1149 浏览

vb.net - 奇怪的 nUnit 单元测试失败

我有classX:

Sub New(ByVal item_line_no As String, ByVal item_text As String)

和下面的unti来测试一个故障点

当我运行测试时,我希望收到异常“行号超过 4 个字符”中引发的消息

但是单元测试失败并显示以下消息

我认为这很简单,但它让我发疯。

注意:在 ExpectedException 的声明中,我收到一个过时的警告,指出而不是

它应该是

但是,这会引发 ExpectedException is not declared 错误!

0 投票
6 回答
5160 浏览

c# - 调试 NUnit 测试的最佳方法是什么?

我的平台:Visual C# 2008 Express Edition with NUnit 2.2.7

我有一个解决方案,我的代码在一个项目中,我的 NUnit 单元测试在同一个解决方案的不同项目中。

我一直在努力调试和单步执行 NUnit 测试。我在网上找到了一些参考资料,建议调用以下内容:

但这甚至没有编译 - 它有编译器错误:

错误 1 ​​命名空间“NUnit.ConsoleRunner”中不存在类型或命名空间名称“Runner”(您是否缺少程序集引用?)

我已经添加了我能找到的所有程序集引用,但没有任何效果。

最后,这是我一起破解的,它有效,但也许你的好读者可以提出更好的解决方案:

1)在我的测试项目中,我要调试的一个测试用例的类名是MyTestClass。它有一个名为 Init() 的 [TestFixtureSetUp] 方法,实际的测试用例在 [Test] 函数 MyTest()

2) 在我的代码项目中,我有一个控制台程序 TestProgram.cs,它可以编译为 EXE。

在 TestProgram.cs 中,我通过以下方式调用测试用例

这可行,我可以调试并单步执行测试用例。

如果有人对使用 Visual Studio 2008 Express 有任何更好的建议而无需支付额外的插件,我很感激您的建议。

0 投票
1 回答
1366 浏览

c# - Application.ExecutablePath 是否根据测试运行程序返回不同的值?

我正在尝试查看是否有办法在多个测试运行器中获得一致的单元测试结果。目前的情况是我们有一个测试程序集,如果您在 NUnit GUI 中运行它们,其中 4 个测试通过,但如果您使用 TestDriven.NET 或 ReSharper 测试运行器运行它们,则失败。在这些测试失败的情况下(抛出 System.NullReferenceException),Application.ExecutablePath 似乎返回的是测试运行程序的可执行文件,而不是测试程序集的 DLL。

除了我应该使用的 Application.ExecutablePath 之外,是否还有其他值(我们目前正在使用它来访问 DLL 的 .config 文件中的值)?NUnit GUI 在做什么(或不做什么)导致它在其他测试运行程序失败时正常运行?

0 投票
1 回答
1133 浏览

nunit - 带有 NCover 插件的 NCover Nunit CruiseControl.NET 任务

有人可以为我提供一个 nunit dll 的 ncover 任务样本吗?

0 投票
4 回答
294 浏览

nunit - 如何测试两个日期是否在 NUnit 中的某个容差范围内?

如何测试两个日期是否在 NUnit 中的某个容差范围内?

0 投票
1 回答
2809 浏览

nunit - 运行 NUnit 时获取 2.0 版本不是兼容版本

我正在尝试运行NUnit的示例测试,但出现错误。我将supportedRuntime版本设置为 v1.0.3705 到 v2.0.50727。我将requiredRuntime版本设置为 v2.0.50727。这是错误的设置吗?

以下是显示的错误:

无法打开元数据文件“c:\Program Files\NUnit 2.4.8\bin\nunit.framework.dll”——“2.0 版不是兼容版本。”

0 投票
1 回答
737 浏览

asp.net - 如何使用依赖于 Session 对象的单元测试用户控件

我正在使用 ASP.NET 构建一个应用程序和最新版本的 NUNIT 框架来测试它。我正在构建一个用户控件来构建一个自定义菜单。该控件有时会检查会话集合中是否存在特定对象以将某些元素添加到菜单中。

它提供的确切功能是:如果注册用户是普通用户,则显示常规链接集,如果注册用户是管理员,则向已显示的链接添加额外链接。控件按预期工作。

我的问题:
我想在 Web 应用程序之外进行控制,并在 NUNIT 测试框架内单独测试它。我唯一担心的是它依赖于 Session 对象的存在。我不知道如何在 nunit 测试方法中模拟它,如果可能的话,或者是否有我没有想到的替代解决方案。

0 投票
4 回答
3254 浏览

vb.net - 如何在 VB.NET 1.1 中对对象序列化/反序列化进行单元测试?

我正在寻找提供单元测试以从内存流中序列化和反序列化对象的示例代码。我找到了使用 C# 2.0 的示例,但是我当前的项目使用的是 VB.NET 1.1(不要问我为什么......),所以解决方案不能使用泛型。我也在使用 NUnit 框架进行单元测试。

谢谢!

0 投票
3 回答
1053 浏览

unit-testing - 如何对使用 ASP.NET 提供程序模型编写的代码进行集成测试?

我对单元测试相当陌生。我有一个建立在 3 层架构中的站点,UI -> BLL -> DAL。而且我使用了 asp.net 提供程序模型,因此通过对 web.config 进行更改,我可以切换到 DAL dll 以针对不同的数据源,以完成使用实体框架编写的 DAL。

现在,我的问题是如何对我的 BLL 进行单元测试?我使用 NUnit。

如果运行/调试我的站点,asp.net/IIS 会加载所有内容并从 web.config 获取正确的配置,所以一切正常,因为入口点来自 IIS。现在,如果我使用 NUnit gui 进行测试并说我的测试项目“MySite.Test.dll”对我的 BLL 有测试用例,那么测试框架如何获得正确的配置以成功运行所有测试。它需要 web.config 中的信息来加载正确的提供程序!

现在,在我的 DAL 中有一个由 EntityFramework 创建的 App.config,其中只有 connectionString。我应该将所有与提供程序相关的配置都放在这个 app.config 中吗?还是我错过了一些关于如何正确执行此操作的大图?

这应该是我认为人们需要经常做的一件常见的事情。有人可以详细说明如何对我的库进行单元测试。

谢谢你,雷。


编辑:阅读前 2 个答案后,我认为我应该通过集成测试更正我的描述。基本上不是 IIS 作为入口点,而是使用 NUnit 之类的 GUI 工具来运行和测试我的代码,所以 NUnit -> BLL -> DAL。人们如何实际设置它?

谢谢,雷。

0 投票
12 回答
1287 浏览

tdd - 开发人员对 TDD 不满意。TDD 真的是问题所在,还是新手从业者缺乏技能?

(这不是一个调查 TDD 优点的问题。还有其他地方可以进行此类讨论。提前致谢。)

我遇到过太多不熟悉该技术的开发人员,他们也报告对测试驱动开发和 NUnit 不满意。

我听到一些负面评论,例如:

  • 我不喜欢 NUnit。 我在一年前尝试过,但我忘记了如何使用它。让我们使用我刚刚编写的这个 Windows 窗体应用程序作为测试工具。无论如何,测试代码都是一次性代码,什么是有什么区别?反正我过去的方法还不错。

  • 我对 TDD 持保留意见。在我们的最后一个项目中(顺便说一句,这是我第一次也是唯一一次使用 TDD 的项目经验),我们甚至不知道设计是什么。”

  • “更多的代码注释很糟糕?你疯了吗?如果你不介意的话,我真的有一些工作要做。” (来自老派的更多评论是更好的评论,你永远不会有太多评论。)

当一个新手抱怨说 TDD 在他们的第一个使用 TDD 的项目中“没有工作”令他们满意时,是 TDD 真的让他们失望了,还是开发人员自己的技能还不足以获得好的结果

如果他们不恨我这么说,我怎么能沟通呢?

问题的关键是,可以通过哪些外交手段与开发人员进行沟通,以鼓励他们更诚实地评估自己在新开发技术方面的新生和不足的能力,而不会危及我们重要的工作关系?

通常,许多开发人员显然还没有掌握 TDD 的许多重要元素,以便在他们的第一个项目中很好地完成它。

例如,与我交谈过的开发社区中的抱怨者很典型:

  • 甚至从未尝试查看或记住代码异味列表。

  • 甚至从未尝试研究重构目录,也从未在实际项目或玩具项目中实践过重构目录。对于某些人来说,可能需要学习更多的 OOP,以便能够很好地进行重构。重构不仅仅是“重命名方法”和“重命名变量”,它们显示为 Visual Studio 2005 重构菜单上的项目。

  • 甚至从未尝试过研究或参与使用紧急设计(通过重构)实现的实际项目,与预先使用设计完成整个项目相比,与仅在编写代码后才编写单元测试的整个项目相比,并且知道差异和它们之间的权衡和适用性。

他们似乎都曾经使用过 NUnit,所以无论他们用它做什么,都是 TDD,天哪,他们似乎认为。NUnit 或单元测试的存在并不意味着 TDD,但他们还不够了解,甚至不知道这一点。

这些都是聪明人。开发人员是聪明人,因为这是进入整个职业的门槛。否则你不能在这个职业中呆太久。当然,如果他们花时间研究这些材料,他们就可以理解。

当他们的经验和知识的总和显然太弱以至于无法对方法或其结果进行评估时,人们怎么能诚实地告诉自己方法论很弱呢?

然而他们确实……我相信这是一种自我保护的行为。或者是懒惰。如果你甚至无法从 Fowler 的重构书目录中说出三个重构,或者如果你无法说出几个代码异味,那么你就是重构的新手,并且可能也是整个 TDD 方法论,以及你所谓的 1或者2个项目经验显然是不够的。

我可以对人们说些什么,或者我可以引导人们关注哪些材料,以让他们做必要的事情来更多地了解 TDD 成功所依赖的技能,例如:

  • 单元测试,
  • 重构,
  • 设计模式,
  • OO设计和分析?

关于这些主题中的每一个都有整本书,有些非常好。也许也有一些更容易接受的学习技巧?我可以以身作则,但我自己给他们的时间是有限的,而且我还不是所有这些技术的黑带。

此外,他们一起去。没有彼此,它们就不能很好地工作。单元测试和重构就像花生酱和果冻一样。如果你不能 grep 单元测试,那么你的重构肯定不会有很好的结果!(问我为什么如果你还不知道,我很乐意向新人解释。)

同样重要的是,无论我做什么或说什么,都不会适得其反:

不能让我的同事疏远 TDD 概念;此外,我绝不能疏远我的同事 在接下来的许多年里,我将不得不每周与他们一起工作。

很难不让其他长期资深的开发人员感到不安,他们已经证明自己在编程的其他方面非常精通。他们理所当然地为自己过去的成就感到自豪,但是他们的自尊心或他们对编程中所有事情的掌握的自我概念几乎是无法克服的,而不会伤害他们的感情。一些高级开发人员还没有准备好面对他们不知道应该向其他人学习的一些新技术。在编程方面,高级开发人员可以更习惯和更自在地成为房间里的专家,有时他们要求被视为专家,即使在涉及 TDD 和相关技术和技术时这完全不现实。

我很高兴地报告说,在编写结构化自动化单元测试方面,我在扭转我们的常驻“反对者”之一方面取得了相当大的成功,一种方法是与他们一对一地使用结对编程。我猜,结对编程为学员提供了一些现实生活中的例子和经验,以及更有经验和知识渊博的从业者的直接指导。

但是结对编程是不够的。他们需要学习更多的重构、代码异味、OOP 概念和 OOD&A 概念,而我无法在一个项目中教授所有这些,甚至不能接近。