问题标签 [unit-testing]

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 投票
4 回答
7553 浏览

c# - 对基于计时器的应用程序进行单元测试?

我目前正在用 C# 编写一个简单的、基于计时器的迷你应用程序,它每 k 秒执行一次操作 n 次。
我正在尝试采用测试驱动的开发风格,所以我的目标是对应用程序的所有部分进行单元测试。

所以,我的问题是:有没有一种对基于计时器的类进行单元测试的好方法?

正如我所看到的,问题在于测试执行的时间会非常长,这是一个很大的风险,因为它们必须等待很长时间才能发生所需的操作。
特别是如果想要真实的数据(秒),而不是使用框架允许的最小时间分辨率(1 毫秒?)。
我正在为动作使用模拟对象,以记录动作被调用的次数,这样动作几乎不需要时间。

0 投票
27 回答
187730 浏览

multithreading - 我应该如何对多线程代码进行单元测试?

到目前为止,我已经避免了测试多线程代码的噩梦,因为它看起来像是一个雷区。我想问一下人们是如何测试依赖线程成功执行的代码的,或者人们是如何测试那些仅在两个线程以给定方式交互时才出现的问题的?

对于今天的程序员来说,这似乎是一个非常关键的问题,将我们的知识集中在这个恕我直言上会很有用。

0 投票
16 回答
6706 浏览

sql - 有没有人在单元测试 SQL 存储过程方面取得任何成功?

我们发现我们为 C#/C++ 代码编写的单元测试确实得到了回报。但是我们在存储过程中仍然有数千行业务逻辑,只有在我们的产品向大量用户推出时才会真正得到愤怒的测试。

更糟糕的是,其中一些存储过程最终会变得很长,因为在 SP 之间传递临时表时会降低性能。这阻止了我们进行重构以使代码更简单。

我们已经多次尝试围绕我们的一些关键存储过程构建单元测试(主要是测试性能),但发现为这些测试设置测试数据真的很困难。例如,我们最终会复制测试数据库。除此之外,测试最终对更改非常敏感,甚至对存储过程的最小更改也是如此。or table 需要对测试进行大量更改。因此,在由于这些数据库测试间歇性失败而导致许多构建中断之后,我们不得不将它们从构建过程中拉出来。

所以,我的主要问题是:有没有人成功地为他们的存储过程编写过单元测试?

我的问题的第二部分是使用 linq 进行单元测试是否会/更容易?

我在想,不必设置测试数据表,您可以简单地创建一个测试对象集合,并在“linq to objects”的情况下测试您的 linq 代码?(我对 linq 完全陌生,所以不知道这是否可行)

0 投票
5 回答
1153 浏览

unit-testing - 严格捕获测试用例以进行单元测试

假设我们有一个用伪语言定义的简单函数。

我们传入一个未排序的数字列表和一个指定升序或降序排序的布尔值。作为回报,我们得到一个排序的数字列表。

根据我的经验,有些人比其他人更擅长捕捉边界条件。问题是,“你怎么知道你什么时候'完成'捕获测试用例”?

我们现在可以开始列出案例,一些聪明的人无疑会想到以前没有涵盖的“再一个”案例。

0 投票
4 回答
1462 浏览

visual-studio - 如何在 Visual Studio 中分别在不同文件夹/项目中运行(单元)测试?

Visual Studio 文件夹结构

我需要一些关于如何在 Visual Studio 中轻松分离单元测试和集成测试的测试运行的建议。通常,或总是,我按照上图所示构建解决方案:单元测试和集成测试的单独项目。单元测试运行非常频繁,而集成测试自然会在上下文正确对齐时运行。

我的目标是在我使用键盘快捷键时能够以某种方式配置要运行的测试(或测试文件夹)。测试最好由图形测试运行程序 (ReSharpers) 运行。所以例如

  • Alt+1 在项目 BLL.Test 中运行测试,
  • Alt+2 在项目 DAL.Tests 中运行测试,
  • Alt+3 同时运行它们(即 [Tests] 文件夹中的所有测试,以及
  • Alt+4 运行文件夹 [Tests.Integration] 中的测试。

TestDriven.net 可以选择只运行所选文件夹或项目中的测试,方法是右键单击它并选择 Run Test(s)。能够做到这一点,但通过键盘命令和图形测试运行器会很棒。

TestDriven.net 测试运行输出

目前我使用 VS2008、ReSharper 4 和 nUnit。但是,一般设置的建议当然也值得赞赏。

0 投票
9 回答
44569 浏览

unit-testing - 开发人员测试与 QA 团队测试 - 什么是正确的工作分工?

在试图提倡更多的开发人员测试时,我发现了“这不是 QA 的工作吗?”的论点。被大量使用。在我看来,让 QA 团队承担所有测试职责是没有意义的,但同时 Spolsky 和其他人说你不应该使用 100 美元/小时的开发人员来做 30 美元/小时的测试人员可以做的事情. 在拥有专门的 QA 团队的公司中,其他人的经历是什么?分工应该画在哪里?

澄清:我的意思是 QA 作为验证和验证团队。开发者不应该做验证(以客户为中心的测试),但验证(功能测试)的划分点在哪里?

0 投票
10 回答
14946 浏览

unit-testing - 自动测试游戏

问题

您将如何将自动化测试添加到游戏中?

我相信您可以对游戏引擎的许多功能(网络、对象创建、内存管理等)进行单元测试,但是是否可以自动测试实际游戏本身?

我不是在谈论游戏元素(比如 Protoss 会在地图 X 中击败 Zerg),而是在谈论游戏和引擎之间的交互。

介绍

在游戏开发中,引擎只是游戏的一个平台。您可以将游戏引擎视为操作系统,将游戏视为操作系统将运行的软件。游戏可以是脚本的集合或游戏引擎中的实际子程序。

可能的答案

我的想法是这样的:

您将需要一个确定性的引擎。这意味着给定一组输入,输出将完全相同。这将包括使用相同输入播种的随机生成器。

然后,创建一个包含化身/用户可以与之交互的几个对象的准系统级别。从小处着手,然后随着更多交互的发展,将对象添加到关卡中。

创建一个遵循路径的脚本(测试寻路)并与不同的对象交互(存储结果或预期行为)。该脚本将是您的自动化测试。一段时间后(比如一周),运行脚本和引擎的单元测试。

0 投票
2 回答
932 浏览

unit-testing - 有没有人成功使用过 NUnitLite?

我最近开始研究 Compact Framework,我想知道是否有人对 VS 2008 中的单元测试提出了一些建议。MSTest 还可以但是调试测试是一场噩梦,而且测试运行程序慢。

我看到 codeplex 上的 NUnitLite 是一个选项,但它看起来不是很活跃;它也在 NUnit 3.0 的路线图中,但谁知道它什么时候会出来。有没有人成功过?

0 投票
7 回答
6276 浏览

unit-testing - 单元测试入门

粗略地说,单元测试是与测试代码隔离地测试代码的一部分。想到的直接优势是:

  • 运行测试变得可自动化和可重复
  • 与通过 GUI 的点击式测试相比,您可以进行更精细的测试

雷米斯

我的问题是,目前在工具方面的“最佳实践”是什么,以及何时何地使用单元测试作为日常编码的一部分?

让我们尝试在某种程度上与语言无关并涵盖所有基础。

0 投票
2 回答
3644 浏览

windows - 单元测试内核驱动程序

我正在寻找适用于 Windows 内核环境的测试框架。到目前为止,我已经找到了 cfix。有人试过吗?有替代品吗?