我是testng(单元测试)和mockito的新手。我已经阅读了一些文章,并在互联网上浏览了一些代码片段。但我对testng
&的单元测试仍有疑问。 mockito
中的spring framework
。
如果我对单元测试的理解是正确的,请纠正我。如果我错过理解概念,请告诉我错误的地方。 谢谢。
答案 0 :(得分:0)
1)除了UnitTests,您还需要集成和/或验收测试。 单元测试将测试您的SUT - 单个测试单元,在这种情况下是特定服务类按预期工作,而不将其与其他类或系统(DB)集成。但是,另外我会为此服务编写一个集成测试,用于从数据库中检索/操作测试数据。理想情况下,此测试不应对数据库中的数据做出任何假设,因此建议在执行测试之前插入您要查找的数据,例如,使用@Before注释并将此测试数据实际提交到测试数据库中。但是,我还建议您在@After测试方法中对数据库进行适当的清理。可以自动回滚数据,但不是最佳,特别是如果你有一个像Hibernate或JPA这样的持久性框架。只有当您处理实际存在于物理(非虚拟!)数据库中的已提交数据时,您才能100%确定测试成功。
如果我正确地理解了你的意图,这实际上听起来像是模拟你的数据库/持久性对象的一个完美的理由 - 让它抛出预期的异常/返回一个空的结果,测试你的代码在这个上按预期运行条件。
TestNG Dataprovider实际上与您正在寻找的相反 - 它是一种为您的测试方法提供数据数组的方法:
org.testng.annotations.DataProvider
注释类型DataProvider
将方法标记为为测试方法提供数据。数据提供程序名称默认为方法名称。带注释的方法必须返回一个Object [] [],其中每个Object []都可以被赋予测试方法的参数列表。想要从此DataProvider 接收数据的@Test方法需要使用dataProvider名称等于此批注的名称。