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)