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

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

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

有帮助吗?

解决方案

根据您的评论:

  

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

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

其他提示

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

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

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

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

我没有这样做,但是使用 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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top