标签: tdd

单元测试与验收测试

你是为了一个还是另一个?或两者?

我的理解是单元测试:

  • 从开发人员的角度验证系统
  • 帮助开发人员练习TDD
  • 保持代码模块化
  • 帮助检测低粒度级别的错误

验收测试:

  • 从业务和QC/QA的角度验证系统
  • 往往是高级别的,因为它们通常由不熟悉代码内部工作的人编写

我觉得两者都是必要的.但是,为了最大限度地减少冗余工作,尝试将单元测试纳入验收测试是否是个好主意?换句话说,让后者称之为前者.相反的方向是否有意义?

您对单元测试与验收测试的一般想法是什么,以及如何相互管理它们?

testing tdd unit-testing acceptance-testing

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

用RubyMine使用Guard是不可能的?

出于某种莫名其妙的原因,RubyMine会自动保存您所做的每一个更改,因此每次按键都会触发Guard来运行您的测试!而最荒谬的是,显然没有办法禁用这个自动保存"功能".我只是想知道,RubyMine似乎是Rails开发人员中非常受欢迎的编辑器,而Guard似乎是用于自动化测试的不可或缺的工具.由于Guard无法与RubyMine合理使用,人们如何处理使用RubyMine自动化测试?

tdd rspec ruby-on-rails rubymine guard

52
推荐指数
1
解决办法
9469
查看次数

笑话.如何在第三方库使用时模拟控制台?

我试图模拟console.warn /错误,但我不能.我使用第三方库,在其中调用console.warn.我需要测试它被称为或不被称为.在我的测试用例中,我试图存根控制台.但它没有帮助.在那之后,我试图手动模拟控制台,它也没有成功.

console.warn = jest.fn();
testSchema('/app/components/Users/UserItem/UserItemContainer.js');
expect(console.warn).toBeCalled();
Run Code Online (Sandbox Code Playgroud)

没用

console.warn = jest.fn();
testSchema('/app/components/Users/UserItem/UserItemContainer.js');
console.warn('error');
expect(console.warn).toBeCalled();
Run Code Online (Sandbox Code Playgroud)

做得好.但我仍然console.warn node_modules/babel-relay-plugin/lib/getBabelRelayPlugin.js:138在终端看到.谁能帮我?

javascript tdd unit-testing jestjs

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

PHPUnit:如何使用多个参数模拟多个方法调用?

我正在为使用PHPUnit的方法编写单元测试.我正在测试的方法在同一个对象上调用同一个方法3次,但使用不同的参数集.我的问题类似于这里这里提出的问题

其他帖子中提出的问题与只采用一个论点的模拟方法有关.

但是,我的方法需要多个参数,我需要这样的东西:

$mock->expects($this->exactly(3))
     ->method('MyMockedMethod')
     ->with($this->logicalOr($this->equalTo($arg1, $arg2, arg3....argNb),
                             $this->equalTo($arg1b, $arg2b, arg3b....argNb),
                             $this->equalTo($arg1c, $arg2c, arg3c....argNc)
         ))
Run Code Online (Sandbox Code Playgroud)

此代码不起作用,因为equalTo()只验证一个参数.给它多个参数会引发异常:

PHPUnit_Framework_Constraint_IsEqual :: __ construct()的参数#2必须是数字

有没有办法对logicalOr具有多个参数的方法进行模拟?

提前致谢.

php tdd phpunit mocking

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

测试驱动开发书

你会推荐什么书来学习测试驱动开发?优选语言不可知.

testing tdd

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

何时在C#单元测试中使用模拟与伪造?

任何人都可以提出建议选择嘲讽与假装的理想方案,即手动设置要领吗?

我对如何处理这种情况有点困惑.

.net c# tdd unit-testing

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

TDD和BDD差异

老实说,我没有看到BDD和TDD之间的区别.我的意思是,两者都只是测试预期会发生什么.我已经看到BDD测试如此充实,他们几乎算作TDD测试,我看到TDD测试非常模糊,他们黑盒子很多代码.我只想说我相信两者都更好.

这是一个有趣的问题.我从哪里开始?我是从高级BDD测试开始的吗?我是从低级TDD测试开始的吗?

testing tdd bdd

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

在Rspec测试中运行Rake任务

我正在构建一个集成测试套件,我需要有一个逻辑,我需要一个干净的数据库.如何在我db:test:purge的一个测试中运行任务?

我正在使用:ruby 1.9.2,rails 3.0.9,rspec 2.6

ruby tdd rake rspec ruby-on-rails-3

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

如何在所有浏览器中运行单元测试?

我从未使用过Selenium,但我想这是为了模拟所有浏览器中的用户交互.

这就像集成测试.

但是,如何以自动方式在所有浏览器上测试js库/框架(单元测试)?

javascript testing tdd bdd selenium

48
推荐指数
8
解决办法
7615
查看次数

测试驱动开发 - 如何在没有实现代码存在之前编写测试

我正在学习TDD,但很难接受它,因为它不是直截了当的.

我无法回答的问题是" 如何在任何实现代码存在之前编写测试? ".

如果我们的目标类/目标方法/目标参数类型/目标返回类型不存在,

  • 在测试中编写代码时我们指的是什么.我们如何开始编写测试?
  • 如果我们所能编写的只是实际实现代码之前的测试方法名称,那么测试如何失败?

每个人都说出为什么,但不是如何

我已经尽力找到资源,详细说明在生产代码之前编写测试但是,假设我错过了良好的资源,他们中的大多数都充满了陈词滥调,解释了为什么TTD比专注于采用它的实践更重要.

一个用例示例.

我们假设我们正在为大学开发软件,我们的用例是课程注册.

为了简单起见,让我们将这个讨论限制在内

  • 场景:"学生每学期最多可以注册3门课程"
  • 测试服务层和dao层.

伪代码

ENROLL(studentId, courseId)
    //check if student enrolled in less than 3 courses in the same semester as given courseId belongs in.
    //if yes, enroll him/her.
    //if not, return an error.
Run Code Online (Sandbox Code Playgroud)

上面的实际实现可能涉及几个涉及服务,daos等的类.

请问您能解释一下如何逐步测试 - 开发它吗?如果您使用TDD实现这一点,您是如何逐步完成的.

我希望这可以帮助像我这样的许多挣扎.

java tdd junit unit-testing

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