- JUnit / TestNG
JUnit
JUnit
JUnit提供了不同类型的断言方法来检查测试中执行代码的结果。具体包括
assertEquals(),assertTrue(),和assertFalse()。
JUnit还支持参数化测试。
TestNG
Mockito
Mockito使得模拟DataService变得更加容易。在这里,我们使用它的mock()方法来模拟DataService并将模拟注入到SomeBusinessImpl类中。
Mockito还提供了很好的注释来自动注入模拟。
EasyMock
EasyMock也是一个可以有效地用于单元测试的模拟框架。它是Mockito的替代品。
当您想要模拟静态方法、构造函数和私有方法时,Powermock非常有用。
SomeClass.staticMethod是一个定义好的静态方法。在模拟之后我们需要测试methodCallingAStaticMethod()这个方法。看看下面的测试代码:
PowerMock也可用于模拟私有方法:
AssertJ
numbers是一个包含3个值的整数列表。AssertJ提供了方法assertThat(),您可以将多个断言链接在一起。assertThat()也适用于字符串,特别适用于字母文本。
Hamcrest
Hamcrest提供了AssertJ的替代方案来编写断言。
· Web层- Spring MockMVC
·数据层- DataJpaTest
·业务层-基于Mockito的测试,最好不要启动Spring Context
Web层的单元测试
Spring MockMVC框架可以轻松执行REST API请求。在上面的代码中,我们使用它来执行REST API,然后设置对结果的某些期望:
· URL是/dummy-item
·接受的内容类型是application+json
·发送请求后,检查响应状态是否为“OK”,内容是具有特定数据的JSON对象
DataJpaTest可以在基于Spring的企业应用程序中对数据层进行单元测试时使用。DataJpaTest在默认情况下,使用内存数据库进行单元测试。
actualResponse是服务返回的内容。
JSONAssert允许我们检查我们感兴趣的请求的特定部分。
·在测试jsonAssert_StrictFalse()中,我们只关心的id,name以及price,忽视了quantity。
·您也可以编写一个测试来检查有没有转义字符,比如使用jsonAssert_WithoutEscapeCharacters()。您还可以在严格模式下执行断言,在此模式中,您可以比较所有字段,并以实际格式进行比较。
·表达式$.length()返回元素的数量。然后可以对该返回值使用断言。
·您可以检查所有id字段,$..id并将它们与预先固定的值列表进行比较。
·您可以提取响应中元素列表的切片,例如第一个元素($.[1])或前两个元素($.[0:2])。
·您可以查询响应以检查特定字段是否存在:$.[?(@.name == 'Eraser')]或$.[?(@.quantity == 5)]。
本人创业团队产品MadPecker,主要做BUG管理、测试管理、应用分发
网址:www.madpecker.com,有需要的朋友欢迎试用、体验!
本文为MadPecker团队产品经理译制,转载请标明出处