Guozhang Wang created KAFKA-1782:
------------------------------------

             Summary: Junit3 Misusage
                 Key: KAFKA-1782
                 URL: https://issues.apache.org/jira/browse/KAFKA-1782
             Project: Kafka
          Issue Type: Bug
            Reporter: Guozhang Wang
            Assignee: Guozhang Wang
             Fix For: 0.8.2


This is found while I was working on KAFKA-1580: in many of our cases where we 
explicitly extend from junit3suite (e.g. ProducerFailureHandlingTest), we are 
actually misusing a bunch of features that only exist in Junit4, such as 
(expected=classOf). For example, the following code

{code}
import org.scalatest.junit.JUnit3Suite
import org.junit.Test

import java.io.IOException

class MiscTest extends JUnit3Suite {
  @Test (expected = classOf[IOException])
  def testSendOffset() {
  }
}
{code}

will actually pass even though IOException was not thrown since this annotation 
is not supported in Junit3. Whereas

{code}
import org.junit._

import java.io.IOException

class MiscTest extends JUnit3Suite {
  @Test (expected = classOf[IOException])
  def testSendOffset() {
  }
}
{code}

or

{code}
import org.scalatest.junit.JUnitSuite
import org.junit._

import java.io.IOException

class MiscTest extends JUnit3Suite {
  @Test (expected = classOf[IOException])
  def testSendOffset() {
  }
}
{code}

or

{code}
import org.junit._

import java.io.IOException

class MiscTest {
  @Test (expected = classOf[IOException])
  def testSendOffset() {
  }
}
{code}

will fail.

I would propose to not rely on Junit annotations other than @Test itself but 
use scala unit test annotations instead, for example:

{code}
import org.junit._

import java.io.IOException

class MiscTest {
  @Test
  def testSendOffset() {
    intercept[IOException] {
      //nothing
    }
  }
}

{code}

will fail with a clearer stacktrace.




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to