这是一个合理性检查,因为我发现这在我们的代码中是正确的。与我们的功能代码不同,由于状态设置、组合案例分析和模拟/伪造邻居/合作者/听众/等,有状态GUI的测试具有不幸的权重。我错过了什么吗?感谢您的反馈。注意事项:测试在JVM中运行,一切都是POJO。到目前为止,我们已经通过增加单元大小进行了一些简化:测试粘在一起的更多部分。新笔记:我们正在使用jUnit和Mockito。 最佳答案 避免代码重复。应提取常见的设置代码和操作寻找层次结构。不要写一个巨大的测试场景。将公共(public)行组合在一起并将它们提取到一个有意义的命名方法中
在Maven中是否可以使用某些东西来自动执行这种检查?我看到了checkstyle和PMD,但没有找到此功能。基本上,如果有类A而没有ATestCase,我希望构建失败。我知道,这不是一个严格的检查,可以通过只创建类轻松绕过,但目前这就足够了。 最佳答案 你在找什么正如JensPiegsa指出的那样,您正在寻找的是一种可以显示测试覆盖率的工具,换句话说,就是您测试使用的代码百分比。它允许您以比(至少按类测试)更可靠的方式查看您的代码测试了多少。您可以使用Cobertura,它很好地集成在Maven中:http://mojo.code
我正在尝试使用JUnit的ExpectedExceptions。我已经试过了:publicclassExpectedTest{@RulepublicExpectedExceptionthrown=ExpectedException.none();@Testpublicvoidtest(){thrown.expect(NullPointerException.class);thrownewNullPointerException();}}这引发了以下异常:java.lang.NoClassDefFoundError:org/hamcrest/TypeSafeMatcheratjava.l
我遇到了一个问题,在有2个@Mock相同类型。我也使用了@Mock(name="name_of_var")语法,但它仍然失败...这是被测类:importjava.util.Date;publicclassParent{privateDatedateA;privateDatedateB;publicvoidsetDateA(Date_dateA){dateA=_dateA;}publicvoidsetDateB(Date_dateB){dateB=_dateB;}publicDategetDateA(){returndateA;}publicDategetDateB(){returnd
这肯定是一个普遍的问题。我有一个类似my-settings.properties的属性文件,它由应用程序类读取。当我编写测试类时,它需要测试可能出现在my-settings.properties中的不同场景,以确保最大的代码覆盖率(例如空属性文件、基本属性文件等).但是我的src/test/resources中只能有一个my-settings.properties。要是有注释就好了@MockFileOnClassPath(use="my-settings-basic.properties",insteadOf="my-settings.properties")然后我可以在我的/src/
我正在使用Mockito测试我的Spring项目,但是@InjectMocks似乎无法将模拟服务注入(inject)另一个Spring服务(bean)。这是我要测试的Spring服务:@ServicepublicclassCreateMailboxService{@AutowiredUserInfoServicemUserInfoService;//thisshouldbemocked@AutowiredLogicServicemLogicService;//thisshouldbeautowiredbySpringpublicvoidcreateMailbox(){//domethi
我正在使用JUnit4和Mockito2。我正在尝试模拟一种情况,在这种情况下,模拟函数在第一次调用时返回异常,并在随后的调用中返回有效值。我尝试简单地使用thenThrow()后跟thenReturn(),但这显然不是正确的方法when(stmt.executeUpdate()).thenThrow(newSQLException("Ihavefailed."));when(stmt.executeUpdate()).thenReturn(1);sut.updateValue("1");verify(dbc).rollback();sut.updateValue("2");verif
假设我有A类classA{finalStringfoo(){//..computingresult,contactingdatabase,whatever..return"somecomputedvalue";}//...andabazillionothermethods,someofthemfinal.}现在我有B类classB{StringmethodIWantToTest(Aa){Stringoutput=a.foo();//...whateverthismethoddoes,e.g.:output+="_suffix";returnoutput;}}我将如何对这个方法进行单元测
我仍在了解测试驱动开发。我对应用程序的用户注册模块有以下要求。系统必须捕获用户的名字、姓氏、电子邮件地址和可选的邮政地址名字和姓氏必须按字母顺序排列名字和姓氏不能为空电子邮件地址必须是有效地址并且是强制性的邮政地址是可选的。在java中实现上面的内容。我写了下面的代码:包含上述字段并具有相应getters和setters的javabean以上字段的验证注解用于保存用户的dao用于输入用户详细信息的用户界面。问题:单元测试应该覆盖上面的哪些代码?即bean的getter和setter、验证注释的存在、dao保存用户的能力、UI中相关表单元素的存在。 最佳答案
我有一个管理游戏回合的应用程序,它相当复杂,并且有很多计时器会产生超时。由于它们经常互操作,因此很难确保一切正常(并保持正常工作)。我想测试它,但某些超时是几分钟,要完全测试它至少需要一个小时!!有没有办法为计时器伪造加速时间?或者我应该按比例减少所有超时,测试它们,然后每次都再次增加?谢谢! 最佳答案 实现此目的的一种方法是制作您自己的界面,为Timer提供一个精简的包装器。然后,您可以在代码中的任何地方针对接口(interface)进行编程。之后,您对接口(interface)进行了两次实现。第一个是连接到真实Timer对象的预