В настоящее время я пытаюсь получить имя класса любого базового класса, который наследуется от BaseTest, в статическом контексте.Поэтому для объяснения я пишу базовый класс, который использует @BeforeClass
из junit.Проблема в том, что я запускаю фальшивое приложение перед всеми тестами класса с собственной базой данных h2 в памяти.Я хочу назвать базу данных в качестве класса теста, чтобы позже я мог видеть, что было записано в базу данных за тест.
BaseTest:
public abstract class BaseTest {
private static final Map<String, String> testConfig = getTestConfig();
private static FakeApplication fakeApplication;
@BeforeClass
public static void onlyOnce(){
fakeApplication = Helpers.fakeApplication(testConfig);
Helpers.start(fakeApplication);
}
@AfterClass
public static void afterClass(){
Helpers.stop(fakeApplication);
fakeApplication = null;
}
private static Map<String, String> getTestConfig() {
//Here should bee FooTest in this case! But actually it's BaseTest
String className = MethodHandles.lookup().lookupClass().getSimpleName();
...
configs.put("db.default.url", "jdbc:h2:file:./data/tests/" + className + ";AUTO_SERVER=TRUE;MODE=Oracle;DB_CLOSE_ON_EXIT=FALSE");
}
И, например, какой-нибудь дочерний тест:
public class FooTest extends BaseTest{
@Test
public void testFoo(){
}
}
Я уже пробовал несколько вещей, и насколько я знаю, это невозможно.Но мне просто нужно спросить, есть ли что-то, чего я еще не знаю.