如何断言我的Ajax请求并测试Ruby on Rails功能测试的JSON输出?
我们已经尝试将单元测试引入到我们当前的项目中,但它似乎没有起作用.额外的代码似乎已经成为一个维护问题,因为当我们的内部框架发生变化时,我们必须绕过并修复任何挂起它的单元测试.
我们有一个抽象基类,用于单元测试我们的控制器,它作为模板调用子类的抽象方法实现,即Framework调用Initialize,所以我们的控制器类都有自己的Initialize方法.
我曾经是单元测试的倡导者,但它似乎并不适用于我们当前的项目.
任何人都可以帮助确定问题以及我们如何使单元测试对我们而不是对我们有效?
什么用于node.js的BDD和TDD?
我习惯使用Cucumber + RSpec.node.js有什么好的组合?
谢谢
随着MS对所有新服务器产品进行攻击,我开始(不情愿地)认为我需要认真对待它."认真对待"的部分内容是TDD.你有没有找到好的单元测试电源shell脚本的方法?
我找到了Geek Noise先生的嘲笑样本- 但我真的很喜欢像RhinoMocks这样的东西.Brian Hartsock有一个从MS Test对powershell字符串运行测试的示例.有点hacky,但它似乎工作.
我想要的是Powershell TDD体验,它与"真实"语言一样干净.
更新澄清:
前两个答案试图引导我远离测试Powershell.意见很有趣.我不想知道在PowerShell中测试是否是个好主意.这是一个主观问题,应该在不同的论坛上提出.我想要一个单元测试PowerShell的解决方案.如果您认为这是一个坏主意(可能是这样),请将其视为一个有趣的学术问题.
重新声明:如何以xUnit的方式实现Powershell逻辑的自动测试? 集成测试很有趣,单元测试打破了最有趣的依赖关系.
我有一个WebTestCase,它在我的应用程序中执行一些基本路由.
我想,在setUp
PHPUnit 的方法中,创建一个与我的主数据库相同的测试数据库,并将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
字符来确认操作.
我怎么解决这个问题?
我正在尝试玩具项目中的测试驱动开发.我可以让我的类的公共接口的测试工作(虽然我仍然在围栏,因为我正在编写比测试方法更多的测试代码).
我倾向于使用很多私有方法,因为我喜欢保持公共接口干净; 但是,我还是想对这些方法进行测试.
由于Cocoa是一种动态语言,我仍然可以调用这些私有方法,但是在我的测试中我得到警告,我的班级可能不会对这些方法做出反应(虽然它显然是这样).由于我喜欢在没有警告的情况下进行编译,因此我的问题是:
在为接下来的几年设置我们的C++单元测试框架的过程中,我们将GoogleTest和CppUnit列入了候选名单.我对两者都有一些经验,而我的偏好是GoogleTest.无论如何要说服我的老板我需要一些事实,所以我在互联网上做了一些阅读,包括手册,维基页面和一些来源.我想出了一个GoogleTest优势列表和一个CppUnit优势(图形测试跑步者).在这里,他们按照感知有用性排序:
假设CppUnit不支持以上所有内容,我是否正确?是否有一个有用的GoogleTest功能在CppUnit中不可用我缺少?
最后但同样重要的是:GoogleTest 缺少哪些优秀的CppUnit功能?
谢谢!
我想用NUnit编写单元测试,这些测试命中了数据库.我希望每个测试都使数据库处于一致状态.我认为交易将允许我"撤销"每个测试,所以我搜索了四周,并在2004-05上找到了几篇关于这个主题的文章:
这些似乎解决了为NUnit实现自定义属性的问题,该属性构建为在每次测试执行后回滚数据库操作的能力.
那很好但是......
编辑:并不是我想要专门测试我的DAL,而是我想要测试与数据库交互的代码片段.对于这些测试是"无接触"和可重复的,如果我可以在每个测试后重置数据库,那就太棒了.
此外,我想将其简化为现在没有测试位置的现有项目.出于这个原因,我无法从头开始为每个测试编写数据库和数据.
我想回到Joel Spolsky关于永远不会从头开始重写代码的文章.总结一下他的论点:代码不会生锈,虽然在许多维护版本发布之后可能看起来不太好,但如果它有效,它就可以了.最终用户并不关心代码的漂亮程度.
你可以在这里阅读文章:你不应该做的事情
我最近接管了一个项目,在查看了他们的代码之后,它非常糟糕.我立刻想到了我之前构建的原型,并明确声明它不应该用于任何生产环境.但当然,人们不听.
代码是作为一个网站构建的,没有任何关注点,没有单元测试和代码重复.没有数据层,没有真正的业务逻辑,除非你在App_Code中计算一堆类.
我已向利益相关方提出建议,虽然我们应该保留现有代码,并进行错误修复发布和一些小功能发布,但我们应该立即开始重新编写测试驱动开发并明确分离关注点.我正在考虑使用ASP.NET MVC路由.
我唯一关心的是从头开始重写可能需要的时间.这并不是完全复杂的,有会员资格的磨坊网络应用程序.
你们有没有遇到类似的问题?你采取了什么特别的步骤?
更新:
那么......我最终决定做什么?我采用了马特的方法并决定重构许多领域.
我创建了一个非常简单的数据访问层,它包含所有ADO调用,并创建了一个SqlHelper对象来执行这些调用.
我实现了一个
更简洁的清洁日志解决方案.
虽然我不再参与这个项目[资金,政治,等等],但我认为它让我对一些项目的编写能力有了很大的了解,并且开发人员可以采取措施使事情变得更加清晰,可读和公正随着时间的推移逐渐变小,逐渐变平.
tdd ×10
unit-testing ×5
agile ×1
architecture ×1
bdd ×1
c# ×1
c++ ×1
cocoa ×1
cppunit ×1
cucumber ×1
database ×1
doctrine ×1
googletest ×1
json ×1
mocking ×1
node.js ×1
nunit ×1
objective-c ×1
ocunit ×1
pester ×1
powershell ×1
rspec ×1
symfony ×1
testing ×1
xcode ×1