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)