Сварка-junit5 4.0.0.CR1 путаница пространства имен

Я немного запутался в использовании пространства имен для @Inject, @Produces и т. д. в сварке-junit5 4.0.0.CR2. Я играю с JakartaEE 8 + Java 17, и Weld-junit5 3.x расстроился, поэтому я думаю, что 4.x - это путь?

Проблема в том, что с тестовым классом вроде

      @EnableWeld
public class TestNotificationDao {

    @WeldSetup
    public WeldInitiator weld = WeldInitiator.of(NotificationDao.class, NotificationDaoImpl.class, TestNotificationDao.class);

    @Inject
    private NotificationDao notificationDao;

    public TestNotificationDao() {
    }

    @Produces
    static DataSource getDataSource() {
        MysqlDataSource dataSource = new MysqlDataSource();
        dataSource.setURL("jdbc:mysql://localhost:3306/sps?useSSL=false");
        dataSource.setUser("sps");
        dataSource.setPassword("sps");
        dataSource.setDatabaseName("sps");
        return dataSource;
    }

    @Test
    public void testLoadQueuedNotifications() {
        Collection<QueuedNotification> notifications = notificationDao.getQueuedNotifications(1);
        assertEquals(1, notifications.size());
    }
}

Если я использую javax.inject.Inject, notificationDao имеет значение null, а если я использую jakarta.inject.Inject (и Produces), notificationDao вводится, но частный источник данных DataSource @javax.inject.Inject внутри NotificationDaoImpl имеет значение null.

1 ответ

Решается переходом на

          <dependency>
        <groupId>jakarta.platform</groupId>
        <artifactId>jakarta.jakartaee-api</artifactId>
        <version>9.1.0</version>
        <scope>provided</scope>
    </dependency>
Другие вопросы по тегам