草庐IT

java - 是否有一套适用于 JDBC 的 stub /模拟在任何地方都可用?

在过去的几年里,我一直在与单元测试数据库代码作斗争,并承受着随之而来的所有痛苦。我发现这个现有的线程非常有启发性:What'sthebeststrategyforunittestingdatabases?已接受答案的作者建议模拟整个数据库层以验证生成的SQL可能很有用。几个月前我第一次看答案的时候并没有多想,但最近我观察到一些错误生成的SQL、错误分配的字段等导致的错误。我确实意识到JDBC相当臃肿且使用起来容易出错,但此时不能切换到不同的东西。有问题的应用程序是数据馈送的批处理器,直接使用JDBC而不是ORM。所有JDBC代码都被分成不同的DAO对象,其中除了实际实现之外,每个对象都

java - 减少测试用例之间的耦合

我正在尝试了解有关JUnit和TDD的更多信息,但我遇到了一些与测试用例之间的耦合有关的问题。当我为特定数据类型的API编写测试用例时,说Deque,如何限制测试用例之间的耦合?例如,如果我正在为insertFirst(Titem)方法编写测试用例,假设我应该能够在正确初始化的对象上调用方法后断言两件事似乎很简单:Deque的大小对象应该增加一个如果我随后调用相应的TremoveFirst()方法,它应该返回对我在初始调用中插入的对象的引用。但是,这会在我的至少两个测试用例之间造成不良耦合,其中一个测试用例的通过取决于另一个API方法的正确实现。例如,为了让这个测试用例通过,我需要一个

java - 如何从 TDD 开始 RESTful api

我正在尝试练习TDD,并且有一个练习要做。互联网某处部署了一项现有服务,具有公共(public)RESTfulapi。对此api的每个请求都需要一些数据准备,例如有效的请求字符串构造、一些加密、一些正文消息格式等。我想使用TDD为这项服务编写通用客户端。我知道这并不像例如StringCalculatorkata,并且需要一些不同的方法。我不知道如何开始。我想在不使用真实服务的情况下对其进行测试,因此需要某种虚假的暗示。编写一些伪造的实现,将其部署在本地主机上并从我的测试中调用它是否更好?或者模拟一个负责发送http请求的类?我希望我的客户端用法如下:publicclassService

java - 在编写实际代码之前在测试驱动开发中编写 junits?

人们总是在TDD中说weshouldwritejunitsevenbeforewewritetheactualcode.不知何故,我无法以正确的精神理解这一点。我希望这意味着您只需编写具有正确签名的空方法,并且您的测试用例预计最初会失败在TDD方法中,我需要获取客户列表。根据我的理解,我将编写如下所示的空方法publicListgetCustomers(intcustId){returnnull;}现在我将编写junit测试用例,其中我将检查大小为10(我实际上期望的)。这样对吗?基本上我的问题是在TDD中,我们如何在编写实际代码之前编写junit测试用例?

java - 我应该对从父类(super class)继承的方法进行单元测试吗?

我目前正在以TDD方式编写JDBC驱动程序的实现(是的,您没看错),虽然此时我只完成了类stub和一些次要功能,我突然想到,由于Statement是PreparedStatement的父类(superclass),它是CallableStatement的父类(superclass),所以当我真正开始时我应该怎么做为这些类的实现编写测试,我应该做其中的哪一个:为Statement创建一个测试套件,然后扩展该套件以对PreparedStatement进行额外测试,然后对CallableStatement执行相同的操作。单独测试每个实现,忽略从父类(superclass)继承的方法。严格测试

java - 你的代码覆盖率有多远?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我最近开始使用代码覆盖工具(特别是Emma和EclEmma),我真的很喜欢它给我的单元测试完整性的View-以及查看单元代码的哪些区域的能力测试根本没有命中。我目前在一个不进行大量单元测试的组织工作,我计划真正插入每个人进行单元测试、代码覆盖率和TDD,并希望转变组织。关于这个主题,我不确定的一个问题是我应该将我的代码覆盖率准确地提高到什么程度。例如,如

java - Seam 和 Mock 有什么区别?

自从我使用java遗留代码以来已经有几个月了,这是我正在处理的一些事情:0%的测试覆盖率。有时我什至看到一些功能超过300行的巨大功能。很多私有(private)方法,有时是静态方法。高度紧密耦合的代码。一开始我很迷茫,发现遗留的TDD很难用。在练习了几周的katas并练习了我的单元测试和模拟技巧之后,我的恐惧感减少了,我感到更加自信了。最近我发现了一本书叫:workingeffectivellywithlegacy,我没有读它,我只是看了一下目录,我发现了一些对我来说是新的东西,TheSeams。显然,这在处理遗留问题时非常重要。我认为这个Seams可以帮助我打破依赖关系并使我的代码

java - 是否有类似 ZenTest/Autotest for Java 和 JUnit 的东西

我以前使用过ZenTest和自动测试来处理Ruby项目,并且我曾经使用它们进行测试驱动开发,如thisconfiguration.我有一个目前正在使用Java进行的项目,我想知道Java世界中是否有类似的东西可以达到相同的效果。 最佳答案 我还可以推荐Infinitest,它正在积极开发中,可以与Java以外的其他语言一起使用。我相信它在Scala上运行良好,但我在Groovy上使用它时运气不佳。它免费供个人使用,由Improving开发。 关于java-是否有类似ZenTest/Aut

c++ - 重构单例/全局以使用依赖注入(inject)进行单元测试

我正在开发一个大型代码库,该代码库广泛使用了单例模式以及一些全局模式。我刚刚开始尝试编写一些单元测试,但是单例和全局给我带来了很多问题,在阅读之后,依赖注入(inject)似乎是可行的方法。进行此更改的重构任务非常艰巨,我正在努力找出最佳方法。据我所知,基本的想法是采取这样的事情:foo(){GraphicsCache::Instance()->GetMyImage();//dostuff}然后把它变成这样:foo(GraphicsCache*Cache){Cache->GetMyImage();//dostuff}这样我就可以模拟这些对象并在我的测试中使用这些模拟。但是有很多这些类型

【实战】二、Jest难点进阶(三) —— 前端要学的测试课 从Jest入门到TDD BDD双实战(七)

文章目录一、Jest前端自动化测试框架基础入门二、Jest难点进阶3.mocktimers学习内容来源:Jest入门到TDD/BDD双实战_前端要学的测试课相对原教程,我在学习开始时(2023.08)采用的是当前最新版本:项版本@babel/core^7.16.0@pmmmwh/react-refresh-webpack-plugin^0.5.3@svgr/webpack^5.5.0@testing-library/jest-dom^5.17.0@testing-library/react^13.4.0@testing-library/user-event^13.5.0babel-jest^2