我已经研究并考虑了许多JavaScript单元测试和测试工具,但一直无法找到合适的选项来保持完全符合TDD标准.那么,是否有一个完全符合TDD标准的JavaScript单元测试工具?
如何验证是否未在对象的依赖项上调用方法?
例如:
public interface Dependency {
void someMethod();
}
public class Foo {
public bar(final Dependency d) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
通过Foo测试:
public class FooTest {
@Test
public void dependencyIsNotCalled() {
final Foo foo = new Foo(...);
final Dependency dependency = mock(Dependency.class);
foo.bar(dependency);
**// verify here that someMethod was not called??**
}
}
Run Code Online (Sandbox Code Playgroud) 我正在构建一个具有一些公共和私有方法的类库.我希望能够对私有方法进行单元测试(主要是在开发时,但它也可能对将来的重构有用).
这样做的正确方法是什么?
我是单元测试的新手,我正在试图弄清楚是否应该开始使用更多的"内部"访问修饰符.我知道如果我们使用'internal'并设置汇编变量'InternalsVisibleTo',我们可以测试我们不想从测试项目声明公共的函数.这让我觉得我应该总是使用'内部',因为至少每个项目(应该?)都有它自己的测试项目.你们能告诉我为什么不这样做吗?我什么时候应该使用'私人'?
反模式:必须至少有两个关键元素来正式区分实际的反模式与简单的坏习惯,不良做法或坏主意:
投票给你在"野外"看过一次太多的TDD反模式.
詹姆斯卡尔的博客文章和 关于testdrivendevelopment yahoogroup的相关讨论
如果你发现了一个'未命名的',那么也可以发布它们.每个反模式一个帖子请投票计算一些东西.
我的既得利益是找到前n个子集,以便我可以在不久的将来在午餐盒中讨论他们.
我熟悉这些概念(在大学里参加测试课程),但我不知道如何真正使用它们,因为我从未参与过"真正的"TDD项目.
我即将开始使用Ruby on Rails开发项目(最有可能使用2.3).此应用程序将用于管理数据,用户和一些文件.一开始不会太复杂,但在接下来的6个月内可能会扩展很多,所以我觉得现在是进入TDD的最佳时机.
我对如何做到这一点有一个基本的想法,但我仍然需要一些指示和建议:
我应该阅读什么Ruby on Rails TDD 101文章?
我需要测试什么?
我应该使用什么gem /插件?
我应该使用rspec吗?别的什么?
一旦我完成了所有测试课程,我该如何进行部署?(例如:持续整合)
TDD到底耗时多少?
我是否需要阅读一本关于此的书,或者我可以通过玩它并阅读在线教程来获得所有内容吗?如果我需要读一本书,那本书是什么?
我喜欢用例子学习,所以有人可以告诉我如何去采取TDD方法来解决这个问题:
我有公司.我有联系人.联系人可以链接到1家公司.公司可以拥有多个联系人.我想创建方法来创建联系人,公司和公司的联系人.
您不必在答案中使用此示例,但它会有所帮助:)
我想在rails中测试文件上传,但我不知道如何做到这一点.
这是控制器代码:
def uploadLicense
#Create the license object
@license = License.create(params[:license])
#Get Session ID
sessid = session[:session_id]
puts "\n\nSession_id:\n#{sessid}\n"
#Generate a random string
chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
newpass = ""
1.upto(5) { |i| newpass << chars[rand(chars.size-1)] }
#Get the original file name
upload=params[:upload]
name = upload['datafile'].original_filename
@license.format = File.extname(name)
#calculate license ID and location
@license.location = './public/licenses/' + sessid + newpass + name
#Save the license file
#Fileupload.save(params[:upload], @license.location)
File.open(@license.location, "wb") { |f| f.write(upload['datafile'].read) }
#Set license …
Run Code Online (Sandbox Code Playgroud) 我有一个同事为对象填充单元测试,这些对象用随机数据填充他们的字段.他的理由是它提供了更广泛的测试,因为它将测试许多不同的值,而普通测试仅使用单个静态值.
我给了他很多不同的理由,主要是:
另一名同事补充道:
任何人都可以添加其他原因我可以让他让他停止这样做吗?
(或者,这是一种可接受的编写单元测试的方法,我和我的其他同事都错了?)
tdd ×10
unit-testing ×7
.net ×2
java ×2
testing ×2
c# ×1
file-upload ×1
javascript ×1
mocking ×1
mockito ×1
private ×1
rspec-rails ×1