Scala 单元测试框架 JUnit 使用
背景
在一些项目中不可避免地需要写一些单元测试,以此提升开发效率和方便地进行回归测试,是产品上线中非常重要的一部分,然而实际上算法工程师们好像并不在意单元测试~
考虑到目前项目中主要是写 Scala,因此本文记录下 Scala/Java 中的单元测试框架 JUnit;
另一种框架 ScalaTest 是 Scala 原生的单元测试框架,本身与 JUnit 没有太多相似之处,为了与 Java 更兼容因此使用 JUnit 框架。
使用
首先需要添加 maven 依赖,主要考虑 JUnit4;
1 | <dependency> |
添加后即可在 test 模块下添加测试单元;
语法
注意:
@Test
修饰的方法不能写在 Object 对象中,否则报错。
装饰符
@Before
每个方法都会执行一次,用于初始化信息;
@After
每个方法都会执行一次,在每个测试方法之后执行;
@BeforClass
针对所有测试方法, 只会执行一次且方法必被
static
关键词修饰@AfterClass
针对所有测试方法, 只会执行一次且方法必被
static
关键词修饰@Test
装饰测试方法
@Test(expected = NullPointerException.class)
用来指示期望抛出的异常类型。 抛出指定的异常类型,则测试通过; 否则测试失败;
@Ignore
忽略的测试方法
断言
序号 | 方法和描述 |
---|---|
1 | void assertEquals(boolean expected, boolean actual) 检查两个变量或者等式是否平衡 |
2 | void assertTrue(boolean expected, boolean actual) 检查条件为真 |
3 | void assertFalse(boolean condition) 检查条件为假 |
4 | void assertNotNull(Object object) 检查对象不为空 |
5 | void assertNull(Object object) 检查对象为空 |
6 | void assertSame(boolean condition) assertSame() 方法检查两个相关对象是否指向同一个对象 |
7 | void assertNotSame(boolean condition) assertNotSame() 方法检查两个相关对象是否不指向同一个对象 |
8 | void assertArrayEquals(expectedArray, resultArray) assertArrayEquals() 方法检查两个数组是否相等 |
执行顺序
多个测试用例
@BeforeClass
-> @Before -> @Test -> @After
-> … -> @Before -> @Test -> @After
-> @AfterClass
常见问题
java.lang.Exception: Test class should have public zero-argument constructor
@Test 装饰的测试函数不能写在 object 对象中,否则报出上述异常。
示例
1 | import org.junit.Assert._ |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 梦家博客!
评论
TwikooValine