使用*通配符导入Junit

时间:2009-11-26 21:18:33

标签: java junit intellij-idea

我注意到在导入JUnit时,*通配符并不总是有效 例如对于注释@Test,您必须导入org.junit.Test,因为org.junit。*无法识别注释。

这是否有原因,是否需要设置?或者只是像JUnit这样的事情的怪癖。

仅供参考,我正在使用:Junit 4.6,Intelli-J 8.1.3。

5 个答案:

答案 0 :(得分:1)

根据您的评论:

  

我已经复制粘贴并获得了“预期的诺言类型”。

对我来说听起来像是名字碰撞。您是从其他地方导入名为Test的类或接口吗?是否有一个名为Test的类与您遇到问题的包在同一个包中?可能是Java正在看到其中一个而不是注释。

答案 1 :(得分:1)

我正在http://www.velocityreviews.com/forums/t369296-p2-disadvantage-of-using-wildcards-in-import-statement.html阅读一些内容,表明IntelliJ中存在可能与此相关的“优化导入”设置。

答案 2 :(得分:0)

我没有理由知道为什么导入org.junit。*不会授予您访问org.junit.Test的权限。事实上,我只是在Eclipse中尝试过,它在那里工作。也许这是你的IDEA工作区的一个问题?

答案 3 :(得分:0)

我没有这样做,但使用import org.junit.*;在这里工作正常,以下测试开启绿灯:

import static junit.framework.Assert.*;

import org.junit.*;

public class AppTest {
    @Test
    public void testApp() {
        assertTrue(true);
    }
}

在Eclipse 3.5下的命令行上使用Java 6u16在IntelliJ IDEA 9.0 BETA CE下进行测试。按预期在任何地方工作。

alt text http://img18.imageshack.us/img18/7906/screenshotmavenpowermoc.png

答案 4 :(得分:0)

我今天在Eclipse中遇到过类似的问题。我对org.junit.Assert.assertEquals进行了静态导入,但是org.junit.Assert.assert的静态导入失败了!他们在同一个班级!

我敢打赌这是一个Eclipse bug。我正在使用junit 4.4和eclipse 3.5