JUnit

Before/After

  1. import org.junit.Assert._
  2. import org.junit._
  3. class UsingJUnit {
  4. @Before
  5. def before(): Unit = {
  6. println("before test")
  7. }
  8. @After
  9. def after(): Unit = {
  10. println("after test")
  11. }
  12. @Test
  13. def testList(): Unit = {
  14. println("testList")
  15. val list = List("a", "b")
  16. assertEquals(List("a", "b"), list)
  17. assertNotEquals(List("b", "a"), list)
  18. }
  19. }

与Java保持一致

BeforeClass/AfterClass

  1. object UsingJUnit {
  2. @BeforeClass
  3. def beforeClass(): Unit = {
  4. println("before class")
  5. }
  6. @AfterClass
  7. def afterClass(): Unit = {
  8. println("after class")
  9. }
  10. }

Java中必须是static方法,对应scala必须写在object里

异常处理

  1. import org.junit.Assert._
  2. import org.junit._
  3. class JunitCheckException {
  4. val _thrown = rules.ExpectedException.none
  5. @Rule
  6. def thrown = _thrown
  7. @Test(expected = classOf[IndexOutOfBoundsException])
  8. def testStringIndexOutOfBounds(): Unit = {
  9. val s = "test string"
  10. s.charAt(-1)
  11. }
  12. @Test
  13. def testStringIndexOutOfBoundsExceptionMessage(): Unit = {
  14. val s = "test string"
  15. thrown.expect(classOf[IndexOutOfBoundsException])
  16. thrown.expectMessage("String index out of range: -1")
  17. s.charAt(-1)
  18. }
  19. }

我们在编写代码的时候,会预期抛出一些异常,对这些异常的检查,也是单测中需要做的事情。下面举例,说明异常检测的方法,一种只检查抛出的异常类,另外一种是检查异常类的类型和 Message 信息。
Scala 在使用 JUnit @Rule 的时候有些问题,一定需要是 public 才可以,下面是一个变通的实现方式。