Scala - отражение / статическая регистрация для тестовой среды

Я пишу простой инструмент микробенчмаркинга на Scala. Я хочу иметь возможность определять тесты и заставлять их регистрироваться (или регистрировать их) при загрузке тестовой среды. AFAIK есть 2 способа сделать это

  1. Отражение - средство выполнения теста ищет путь к классу, соответствующий тесту.
  2. Статически - в java я мог бы иметь статический блок инициализации, который регистрирует тест.

У меня проблемы с выполнением любого из них в Scala. Вот основные конструкции программы.

class TestRunner extends App {
  val tests = Seq[BaseTest]

  //... run the tests
}

abstract class BaseTest {
  def run
}

Клиенты будут расширять BaseTest, и когда Приложение запускается, Бегун может запускать их.

Отражение

Мне не удалось найти рабочий сканер путей к классам (обратите внимание, что я использую Scala 2.12.5), чтобы найти подклассы BaseTest. Есть ли хороший способ написать этот код с использованием библиотек отражения Scala (или java).

Статический блок

Я пробовал иметь сопутствующий объект, регистрирующий тест, однако этот объект не создается до тех пор, пока на него не будет ссылаться (способ обойти это), и код никогда не выполняется.

Любые мысли по поводу решения этого вопроса приветствуются.

Спасибо

Вы пробовали изучить код JUnit или ScalaTest? Я не уверен, что именно делает это здесь, но похоже, что он пытается достичь чего-то не слишком похожего. Но не уверен, смотрел ~ 3 минуты ...

Andrey Tyukin 08.04.2018 18:04
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
29
0

Другие вопросы по теме