我注意到在导入JUnit时,*通配符并不总是有效 例如对于注释@Test,您必须导入org.junit.Test,因为org.junit。*无法识别注释。
这是否有原因,是否需要设置?或者只是像JUnit这样的事情的怪癖。
仅供参考,我正在使用:Junit 4.6,Intelli-J 8.1.3。
答案 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