Wie würde ich meine Annotation und Federkonfigurationen strukturieren, damit ich eine Annotation verwenden kann, um eineJava

Java-Forum
Anonymous
 Wie würde ich meine Annotation und Federkonfigurationen strukturieren, damit ich eine Annotation verwenden kann, um eine

Post by Anonymous »

Ich möchte einfach < /p>
tun können

Code: Select all

@MyTestConfig
class MyTests {
@Autowired SomeJpaRepo repo;
@Test
void findAll() {
assertThatCode(repo::findAll).doesNotThrowAnyExceptions();
}
}
< /code>
Was ich angefangen habe, war, die Annotation zu machen < /p>
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@TestContainers
public @interface MyTestConfig {
}
< /code>
Damit die folgenden Testwerke < /p>
geben@MyTestConfig
class MyTests {
@Container
private static final MySQLContainer MYSQL_CONTAINER =
new MySQLContainer(
DockerImageName.parse("library/mariadb")
.asCompatibleSubstituteFor("mysql"));

@DynamicPropertySource
static void mysqlProperties(DynamicPropertyRegistry registry) {
registry.add("spring.datasource.url", MYSQL_CONTAINER::getJdbcUrl);
registry.add("spring.datasource.username", MYSQL_CONTAINER::getUsername);
registry.add("spring.datasource.password", MYSQL_CONTAINER::getPassword);
}
@Autowired SomeJpaRepo repo;
@Test
void findAll() {
assertThatCode(repo::findAll).doesNotThrowAnyExceptions();
}
}
Ich kann diese Testkontainer -Konfiguration jedoch nicht in eine separate Datei ausilt Erstellen einer abstrakten Testklasse < /p>

Code: Select all

abstract class AbstractMyTest {
@Container
private static final MySQLContainer MYSQL_CONTAINER =
new MySQLContainer(
DockerImageName.parse("library/mariadb")
.asCompatibleSubstituteFor("mysql"));

@DynamicPropertySource
static void mysqlProperties(DynamicPropertyRegistry registry) {
registry.add("spring.datasource.url", MYSQL_CONTAINER::getJdbcUrl);
registry.add("spring.datasource.username", MYSQL_CONTAINER::getUsername);
registry.add("spring.datasource.password", MYSQL_CONTAINER::getPassword);
}
}
< /code>
Ich denke, dass es möglicherweise etwas in der Erstellung einer JUNIT -Erweiterungsklasse sein kann, anstatt Federanmerkungen zu verwenden. < /p>
Nur eine Notiz i ' m noch auf Spring Boot 2.7.18, also habe ich nicht die @ServiceContainer 
Annotation.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post