Самое масштабное и проблема SBT - класс не является доступным org.scalatest.Suite - PullRequest
0 голосов
/ 14 июля 2011

Версия 5 моего кода имеет ошибку при запуске тестов с использованием SBT:

https://www.assembla.com/code/opyate-scala-graph-fork-sbt/subversion/changesets/5

Я искал в Интернете "Класс не является доступным org.scalatest.Suite", , но получаю результаты для этого сообщения только в самом масштабном фреймворковом коде .

Пожалуйста, помогите мне выяснить, что не так, и если это проблема с зависимостью версии, проблема с совместимостью, или если тесты просто неправильно написаны.


Подробности (один пример):

Suites

@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 экземпляра моего TDegree:

classOf[Suite].isAssignableFrom(clazz) &&
    Modifier.isPublic(clazz.getModifiers) &&
    !Modifier.isAbstract(clazz.getModifiers) &&
    Modifier.isPublic(clazz.getConstructor(emptyClassArray: _*).getModifiers)

Требуется конструктор без аргументов, которого у меня нет.

Полагаю, теперь возникает вопрос: «Как заставить мои тестовые классы работать с ScalaTest, если у моих классов нет конструктора без аргументов?».

1 Ответ

1 голос
/ 15 июля 2011

Это означает, что sbt обнаруживает и передает ScalaTest класс, который не является доступным набором.Это, вероятно, означает, что это доступ к пакету.Если он публичный, убедитесь, что у него есть общедоступный конструктор без аргументов.Я очень быстро посмотрю на различия, чтобы увидеть, вижу ли я виновника.

...