在Scala中,包不一定需要匹配文件夹。如果不关心工具,我宁愿忽略包装中那么冗余的组织前缀,以允许更浅的路径。
我的问题是Eclipse JUnit插件似乎在使用文件夹而不是classpath。当我将Scala测试类放在与包匹配的文件夹中时,一切正常。但是,如果我按照我希望的方式将它们放入ClassNotFoundException。
假设我的包前缀是org.myorganisation.myproduct,用于项目中的所有类。然后我想有像
这样的文件夹src/test/scala/domainpackage1/
而不是
src/test/scala/org/myorganisation/myproduct/domainpackage1
但如果我把测试类看起来像:
package org.myorganisation.myproduct;
package domainpackage1
...
@RunWith(classOf[JUnitRunner])
class DomainClass1Spec extends FeatureSpec with GivenWhenThen {
...
}
在文件夹
中src/test/scala/domainpackage1
我得到了
java.lang.ClassNotFoundException: domainpackage1.DomainClass1Spec
所以似乎JUnit插件正在查看源位置并查找与之匹配的类文件,而不是以更稳定的方式查找类。
我的意思是,应该可以从编译单元(.scala)中的当前位置找到输出(.class),对吧?
答案 0 :(得分:1)
这是Eclipse中的一个已知问题:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=16209
标记为WONTFIX
。但也许您应该对它进行评论并指出Scala的问题...