![]() |
1
2
有趣的问题。我很高兴听到你先写测试。 如果您让设计通过测试实现,那么您更可能只构建您需要的部分。但这是最好的设计吗?也许不是,但不要让这让你泄气——你的添加方法是有效的! 现在判断以后是否需要getmodule方法还为时过早。现在,构建您需要的功能,然后变为绿色,然后慢慢地重构它(再次从红色变为绿色),以获得您想要的设计。 |
![]() |
2
1
改进设计的一部分是从一个简单的方法这样的小步骤开始,然后在足够的支持下成长为复杂的统计(最终放弃这个方法并更改测试)。在进行TDD时,不要期望编写的第一个测试针对的是理想的接口。随着设计的发展,会有一些乱七八糟的东西掉下来。 也就是说,如果您没有看到该方法的公共目的,那么尝试尽可能地限制它对测试代码的可见性。尽管当您构建系统的其余部分,并有一些实际的东西作为set方法的副作用进行测试时,这一点最终也会消失。 |
![]() |
3
0
我会谨慎地在类中引入一个只用于测试的公共方法。 您可以通过多种方式测试: 反射 :getmodule方法是类中的私有方法(如果“stats”是私有的,这也可以工作),您可以通过反射在测试方法中访问它。这将很好地工作,唯一的问题是,如果您更改私有方法的名称或添加/删除一些变量,您将不会得到任何编译器错误(但是,当然,您的测试将失败,您将很早知道) 遗传 :GetModule方法可以被保护(只有继承可见),并且测试类可以从主类继承。这样,您的测试类就可以访问这个方法,但这并没有真正暴露在外部世界中。 断言副作用 :这是您真正思考向系统添加模块意味着什么的地方。如果它会像您所说的那样影响一些“统计信息”,那么您可以编写断言这些统计信息被适当修改的测试。 |
![]() |
S4beR · jest-手表模式错误 7 年前 |
|
M.C · 如何从Ruby TDD哈希数组中返回名称 7 年前 |
![]() |
Maverick94 · Python unitest不工作 7 年前 |
![]() |
erexo · Moq模拟。Of<Obj>vs new Obj(); 7 年前 |
![]() |
jpuriol · JUnit测试中的“单例” 7 年前 |
![]() |
Py.Jordan · 如何在Python中模拟用户输入 7 年前 |