Я пишу простой инструмент микробенчмаркинга на Scala. Я хочу иметь возможность определять тесты и заставлять их регистрироваться (или регистрировать их) при загрузке тестовой среды. AFAIK есть 2 способа сделать это
У меня проблемы с выполнением любого из них в 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 минуты ...