问题标签 [tdd]

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 投票
17 回答
1114 浏览

unit-testing - 你在你的专业项目中使用单元测试吗?

我们即将开始项目的一个新部分,似乎对单元测试没有太多兴趣(而且感觉他们没有经历过 TDD)。我相信它几乎是必不可少的,它使维护变得更加容易。那么你的观点是什么?

谢谢

顺便说一句:这是一个与语言无关的问题,但是新项目是用 Java 编写的。

0 投票
5 回答
986 浏览

nunit - 如何在 NUnit 中编写测试方法来测试保存文件方法?

我编写了一个保存文件方法来将对象保存到 xml。但我不确定如何在 NUnit 中测试该方法。我是否需要手动创建示例文件并比较文件之间的字符串?有没有更好的方法来测试该方法?

感谢您的回答。

0 投票
8 回答
975 浏览

unit-testing - 在测试 API 的包装器时,我的单元测试是否应该直接接触 API?

我编写了一些单元测试来测试围绕 FTP 服务器 API 的包装器

单元测试和 FTP 服务器都在同一台机器上。

包装器 API 被部署到我们的平台并用于远程处理和 Web 服务场景。包装 API 本质上采用 XML 消息来执行任务,例如添加/删除/更新用户、更改密码、修改权限……诸如此类。

在单元测试中,假设将用户添加到虚拟域,我创建 XML 消息以发送到 API。API 完成它的工作并返回一个响应,其中包含有关操作是成功还是失败的状态信息(错误代码、验证失败等)。

为了验证 API 包装器代码是否确实做了正确的事情(如果响应指示成功),我调用 FTP 服务器的 COM API 并直接查询其存储以查看,例如,在创建用户帐户时,用户帐户是否真的做了被创建。

这气味难闻吗?

更新 1: @Jeremy/Nick:包装器是测试的重点,FTP 服务器及其 COM API 是第 3 方产品,可能经过良好测试且稳定。包装 API 必须解析 XML 消息,然后调用 FTP 服务器的 API。我将如何验证包装器正确设置了用户帐户的特定属性,这可能是一个愚蠢的情况。例如,由于包装代码中的拼写错误,设置了错误的 FTP 帐户的属性或属性。一个很好的例子是设置上传和下载速度限制,这些可能会在包装代码中转置。

更新2:感谢大家的回答。对于建议使用模拟的人,我已经想到了,但是那里的灯还没有打开,我仍在努力思考如何让我的包装器与 FTP 服务器的模拟一起工作. 模拟将驻留在哪里,我是否将所述模拟的实例传递给包装器 API 以使用而不是调用 COM API?我知道嘲弄但很难理解它,主要是因为我发现大多数示例和教程都非常抽象并且(我很惭愧地说)接近于难以理解。

0 投票
7 回答
569 浏览

c++ - 使用 C/C++ 进行单元测试:经验教训,要记住什么?

使用 C/C++ 进行单元测试:你教那些以前没有做过单元测试或者来自 Java/Junit 的人什么?

从您的角度来看,最重要的课程/要记住/练习的事情是什么,可以节省大量时间或压力(尤其是关于 C/C++)?

0 投票
3 回答
1364 浏览

ruby-on-rails - 应该从战壕中测试工作流程

如今,Rails(而不仅仅是 Rails)开发世界中的每个人都在谈论 TDD(BDD)。很容易找到很多关于它的一般信息,有很多工具可以用于此目的,并且有很多(好的)示例说明如何使用它们。

现在,我已经在火车上了。我喜欢这个想法(以前从未做过 TDD),我决定选择 Shoulda(因为在我看来它很容易理解)。我读了很多例子,并做了一些初步测试。我的问题是:我只是不确定我是否做得对。正如我所说,网上有很多小例子,但我还没有找到任何全面的指南,涵盖 TDD 与 Shoulda 的整体工作流程。

以下是我的问题:

  • 你用 Shoulda 练习 TDD 的方式是什么?(在一次迭代中,您通常的工作流程是什么?)
  • 您还使用哪些其他工具(除了 Shoulda 本身)?
  • 还有其他提示吗?
0 投票
1 回答
227 浏览

visual-studio-2008 - 如何使用调试从同一解决方案中的测试项目进入 Web 应用程序中的类?

在使用 NUnit 和测试项目时,我们无法找到一种方法来进入我们在 Web 应用程序中测试的类。我们正在为 Visual Studio 2008 使用 TestDriven.NET 加载项。我们能够在测试项目中命中断点,但无法进入正在测试的 Web 应用程序类。

0 投票
3 回答
3712 浏览

unit-testing - GWT 单元测试 TDD 和工具

我刚刚开始使用 gwt,到目前为止一切都很好,但是在阅读了一些示例代码之后,我想知道是否需要高水平的测试覆盖率?(我可以看到大多数代码都是声明性的,然后添加一些属性,我可以看到检查的意义,所以我有特定的属性但不是全部)

我也很想知道关于使用 GWT 进行 TDDing 的陷阱是什么

我正在使用 Eclipse,所以如果您对 GWT 的一些特别添加插件真的很满意,我会很高兴听到这一点,谢谢您的意见

编辑:也许我在问一个非常广泛的问题,但即使是很少的信息也会帮助我从 jquery/extJs/prototype/scriptaculous 中获得 nvelocity 视图,这有点不同

0 投票
6 回答
2393 浏览

java - 如何模拟实例化为局部变量的类

我正在为调用一些 DAO 类以对数据库执行操作的业务方法编写测试。

这个方法,首先从 DataSource 对象中检索一个 JDBC 连接,将相同的连接传递给所有 DAO 实例,所以我可以用它来控制事务。因此,如果一切正常,我必须通过连接对象调用 commit()。

我想测试是否调用了 commit(),所以我想创建一个检查它的期望(我正在使用 JMock)。但由于 Connection 类不是我的 Business 类的直接邻居,我不知道该怎么做。

有人知道如何克服这个吗?有一些 JMock 工具可以解决这个问题,还是有一些替代设计可以克服这个问题?

谢谢

0 投票
12 回答
13494 浏览

c++ - 多态性或条件会促进更好的设计吗?

我最近在谷歌测试博客中偶然发现了这篇关于编写更多可测试代码的指南。直到这一点,我都同意作者:

支持多态而不是条件:如果你看到一个 switch 语句,你应该考虑多态。如果您在课堂上的许多地方看到相同的 if 条件重复,您应该再次考虑多态性。多态性会将你的复杂类分解成几个更小的更简单的类,它们清楚地定义了哪些代码片段是相关的并一起执行。这有助于测试,因为更简单/更小的类更容易测试。

我根本无法解决这个问题。我可以理解使用多态性而不是 RTTI(或 DIY-RTTI,视情况而定),但这似乎是一个如此广泛的陈述,我无法想象它实际上被有效地用于生产代码。在我看来,更容易为具有 switch 语句的方法添加额外的测试用例,而不是将代码分解成几十个单独的类。

此外,我的印象是多态性会导致各种其他微妙的错误和设计问题,所以我很想知道这里的权衡是否值得。有人可以向我解释这个测试指南的确切含义吗?

0 投票
7 回答
609 浏览

tdd - 如何将软件商店转换为 TDD?

我真的很想在我工作的商店内推动 TDD 开发。那里的许多前辈没有从事过单元测试,也没有做过涉及数据库的单元测试。

我很想带来一些好的论据、培训书籍、可能的教练来缓解过渡。