使用 SBT 运行测试时,我的代码的修订版 5 出现错误:
https://www.assembla.com/code/opyate-scala-graph-fork-sbt/subversion/changesets/5
我在互联网上搜索了“类不是可访问的 org.scalatest.Suite”,但只在 scalatest 框架代码中获得了该消息的结果。
请帮助我找出问题所在,以及它是依赖版本问题、兼容性问题还是测试编码不正确。
细节是(一个例子):
套房
@RunWith(classOf[JUnitRunner])
class TDegreeRootTest
extends Suites(
new TDegree[immutable.Graph](immutable.Graph),
new TDegree[ mutable.Graph]( mutable.Graph))
with ShouldMatchers
{
}
测试班
class TDegree[+CC[N,E[X] <: EdgeLikeIn[X]] <: Graph[N,E] with GraphLike[N,E,CC[N,E]]]
(val factory: GraphCompanion[CC])
extends Suite
with ShouldMatchers
{ ... }
例外
[error] Could not run test scalax.collection.TDegree:
java.lang.IllegalArgumentException:
Class is not an accessible org.scalatest.Suite:
scalax.collection.TDegree
引发异常的ScalaTest代码
true
对于clazz
my 的实例,需要保留以下内容TDegree
:
classOf[Suite].isAssignableFrom(clazz) &&
Modifier.isPublic(clazz.getModifiers) &&
!Modifier.isAbstract(clazz.getModifiers) &&
Modifier.isPublic(clazz.getConstructor(emptyClassArray: _*).getModifiers)
它需要一个无参数的构造函数,而我没有。
我想现在的问题变成了“如果我的类没有非参数构造函数,我如何让我的测试类与 ScalaTest 一起运行?”。