标签: tdd

如何从Ruby on Rails功能测试中测试JSON结果?

如何断言我的Ajax请求并测试Ruby on Rails功能测试的JSON输出?

tdd json ruby-on-rails

70
推荐指数
3
解决办法
3万
查看次数

单元测试采用

我们已经尝试将单元测试引入到我们当前的项目中,但它似乎没有起作用.额外的代码似乎已经成为一个维护问题,因为当我们的内部框架发生变化时,我们必须绕过并修复任何挂起它的单元测试.

我们有一个抽象基类,用于单元测试我们的控制器,它作为模板调用子类的抽象方法实现,即Framework调用Initialize,所以我们的控制器类都有自己的Initialize方法.

我曾经是单元测试的倡导者,但它似乎并不适用于我们当前的项目.

任何人都可以帮助确定问题以及我们如何使单元测试对我们而不是对我们有效?

tdd agile automated-tests unit-testing

69
推荐指数
4
解决办法
9133
查看次数

node.js的BDD和TDD?

什么用于node.js的BDD和TDD?

我习惯使用Cucumber + RSpec.node.js有什么好的组合?

谢谢

tdd bdd rspec cucumber node.js

69
推荐指数
4
解决办法
2万
查看次数

如何在PowerShell中进行TDD和单元测试?

随着MS对所有新服务器产品进行攻击,我开始(不情愿地)认为我需要认真对待它."认真对待"的部分内容是TDD.你有没有找到好的单元测试电源shell脚本的方法?

我找到了Geek Noise先生的嘲笑样本- 但我真的很喜欢像RhinoMocks这样的东西.Brian Hartsock有一个从MS Test对powershell字符串运行测试的示例.有点hacky,但它似乎工作.

我想要的是Powershell TDD体验,它与"真实"语言一样干净.


更新澄清:

前两个答案试图引导我远离测试Powershell.意见很有趣.我不想知道在PowerShell中测试是否是个好主意.这是一个主观问题,应该在不同的论坛上提出.我想要一个单元测试PowerShell的解决方案.如果您认为这是一个坏主意(可能是这样),请将其视为一个有趣的学术问题.

  • 是的,脚本语言将不同的系统粘合在一起.但是,正如已经指出的那样,用动态语言模拟和破坏接缝也很容易.
  • 我不是在问"调试".调试是一个非常有用的主题.我会让别人问它.
  • 也许PS脚本应该很简单.该语言支持模块化,复杂的过程将不可避免地在PS中实现(即使是一个坏主意).
  • 这个问题的答案不是"你不能".我可以看到(来自链接的博客 - 有点老),有些人在这个问题上取得了进展.

重新声明:如何以xUnit的方式实现Powershell逻辑的自动测试? 集成测试很有趣,单元测试打破了最有趣的依赖关系.

tdd powershell unit-testing pester

66
推荐指数
2
解决办法
1万
查看次数

在Symfony 2 WebTestCase上创建测试数据库和加载fixture的最佳方法是什么?

我有一个WebTestCase,它在我的应用程序中执行一些基本路由.

我想,在setUpPHPUnit 的方法中,创建一个与我的主数据库相同的测试数据库,并将fixture加载到其中.

我正在做一些解决方法并执行一些控制台命令,如下所示:

class FixturesWebTestCase extends WebTestCase
{
    protected static $application;

    protected function setUp()
    {
        self::runCommand('doctrine:database:create');
        self::runCommand('doctrine:schema:update --force');
        self::runCommand('doctrine:fixtures:load --purge-with-truncate');
    }

    protected static function runCommand($command)
    {
        $command = sprintf('%s --quiet', $command);

        return self::getApplication()->run(new StringInput($command));
    }

    protected static function getApplication()
    {
        if (null === self::$application) {
            $client = static::createClient();

            self::$application = new Application($client->getKernel());
            self::$application->setAutoExit(false);
        }

        return self::$application;
    }
}
Run Code Online (Sandbox Code Playgroud)

但我很确定这不是最好的方法,特别是因为doctrine:fixtures:load期望用户点击一个Y字符来确认操作.

我怎么解决这个问题?

tdd doctrine symfony

64
推荐指数
4
解决办法
4万
查看次数

单元测试Xcode中的私有方法

我正在尝试玩具项目中的测试驱动开发.我可以让我的类的公共接口的测试工作(虽然我仍然在围栏,因为我正在编写比测试方法更多的测试代码).

我倾向于使用很多私有方法,因为我喜欢保持公共接口干净; 但是,我还是想对这些方法进行测试.

由于Cocoa是一种动态语言,我仍然可以调用这些私有方法,但是在我的测试中我得到警告,我的班级可能不会对这些方法做出反应(虽然它显然是这样).由于我喜欢在没有警告的情况下进行编译,因此我的问题是:

  1. 如何在Xcode中关闭这些警告?
  2. 我还能做些什么来关闭这些警告吗?
  3. 我在尝试"白盒子"测试时做错了什么?

tdd xcode cocoa objective-c ocunit

63
推荐指数
2
解决办法
1万
查看次数

GoogleTest与CppUnit:事实

在为接下来的几年设置我们的C++单元测试框架的过程中,我们将GoogleTestCppUnit列入了候选名单.我对两者都有一些经验,而我的偏好是GoogleTest.无论如何要说服我的老板我需要一些事实,所以我在互联网上做了一些阅读,包括手册,维基页面和一些来源.我想出了一个GoogleTest优势列表和一个CppUnit优势(图形测试跑步者).在这里,他们按照感知有用性排序:

  • INSTANTIATE_TEST_CASE_P用你想要的任何参数实例化一个测试用例,包括笛卡尔积
  • FRIEND_TEST用于测试私有类成员(针对所有遗留代码)
  • 将断言转变为断点
  • 非致命的断言
  • "开箱即用"googlemock整合
  • 自动测试检测,无需枚举它们
  • 可以禁用和启用测试
  • 可以使用名称模式选择要运行的测试
  • 值/类型参数化测试
  • 用户定义的谓词断言
  • 死亡测试
  • 更丰富的断言
  • 类型断言
  • 在子程序上断言
  • 可以使用<<添加其他调试信息到断言
  • RecordProperty将最后一个属性值发送到XML输出
  • SCOPED_TRACE有助于理解来自子例程或循环内部的断言失败的上下文.
  • xUnit XML输出可以立即由Jenkins显示,而不需要在它们之间进行XSLT转换
  • 支持自定义类型打印机
  • 测试指示消耗的时间(我怀疑CppUnit也可以这样做,但我还没想到它)
  • 测试事件监听器API(用户定义的插件)
  • 测试改组
  • 没有例外和RTTI

假设CppUnit不支持以上所有内容,我是否正确?是否有一个有用的GoogleTest功能在CppUnit中不可用我缺少?

最后但同样重要的是:GoogleTest 缺少哪些优秀的CppUnit功能?

谢谢!

c++ tdd unit-testing cppunit googletest

63
推荐指数
2
解决办法
3万
查看次数

如何使用NUnit测试与数据库相关的代码?

我想用NUnit编写单元测试,这些测试命中了数据库.我希望每个测试都使数据库处于一致状态.我认为交易将允许我"撤销"每个测试,所以我搜索了四周,并在2004-05上找到了几篇关于这个主题的文章:

这些似乎解决了为NUnit实现自定义属性的问题,该属性构建为在每次测试执行后回滚数据库操作的能力.

那很好但是......

  1. 此功能是否存在于NUnit本地?
  2. 这项技术在过去4年中有所改进吗?
  3. 这仍然是测试数据库相关代码的最佳方法吗?

编辑:并不是我想要专门测试我的DAL,而是我想要测试与数据库交互的代码片段.对于这些测试是"无接触"和可重复的,如果我可以在每个测试后重置数据库,那就太棒了.

此外,我想将其简化为现在没有测试位置的现有项目.出于这个原因,我无法从头开始为每个测试编写数据库和数据.

c# database tdd nunit unit-testing

62
推荐指数
1
解决办法
3万
查看次数

你怎么模仿密封课程?

模拟密封课程可能会非常痛苦.我目前赞成使用适配器模式来处理这个问题,但是有些事情让我觉得很奇怪.

那么,你嘲笑密封课程的最佳方式是什么?

Java答案非常受欢迎.实际上,我预计Java社区已经处理了这个问题,并且提供了很多东西.

但这里有一些.NET意见:

language-agnostic tdd unit-testing mocking

61
推荐指数
5
解决办法
3万
查看次数

何时从头开始重写代码库

我想回到Joel Spolsky关于永远不会从头开始重写代码的文章.总结一下他的论点:代码不会生锈,虽然在许多维护版本发布之后可能看起来不太好,但如果它有效,它就可以了.最终用户并不关心代码的漂亮程度.

你可以在这里阅读文章:你不应该做的事情

我最近接管了一个项目,在查看了他们的代码之后,它非常糟糕.我立刻想到了我之前构建的原型,并明确声明它不应该用于任何生产环境.但当然,人们不听.

代码是作为一个网站构建的,没有任何关注点,没有单元测试和代码重复.没有数据层,没有真正的业务逻辑,除非你在App_Code中计算一堆类.

我已向利益相关方提出建议,虽然我们应该保留现有代码,并进行错误修复发布和一些小功能发布,但我们应该立即开始重新编写测试驱动开发并明确分离关注点.我正在考虑使用ASP.NET MVC路由.

我唯一关心的是从头开始重写可能需要的时间.这并不是完全复杂的,有会员资格的磨坊网络应用程序.

你们有没有遇到类似的问题?你采取了什么特别的步骤?

更新:

那么......我最终决定做什么?我采用了马特的方法并决定重构许多领域.

  • 由于App_Code变得相当大,从而减慢了构建时间,因此我删除了许多类并将它们转换为类库.
  • 我创建了一个非常简单的数据访问层,它包含所有ADO调用,并创建了一个SqlHelper对象来执行这些调用.

  • 我实现了一个
    更简洁的清洁日志解决方案.

虽然我不再参与这个项目[资金,政治,等等],但我认为它让我对一些项目的编写能力有了很大的了解,并且开发人员可以采取措施使事情变得更加清晰,可读和公正随着时间的推移逐渐变小,逐渐变平.

architecture testing tdd

61
推荐指数
7
解决办法
1万
查看次数