首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

焊接
EN

Stack Overflow用户
提问于 2022-04-13 20:09:02
回答 1查看 14关注 0票数 0

对于@Inject、@Produces等的命名空间使用情况,我有点困惑,使用的是焊缝-junit5 5 4.0.0.CR2。我在玩JakartaEE 8+ Java 17,而焊接-Junit53.x很生气,所以我想4.x是该走的路吗?

问题是,使用这样的测试类

代码语言:javascript
运行
复制
@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 (并生成),则注入notificationDao,但NotificationDaoImpl中的@javax.inject.Inject私有DataSource dataSource为null。

EN

回答 1

Stack Overflow用户

发布于 2022-04-14 04:52:59

通过移动到

代码语言:javascript
运行
复制
    <dependency>
        <groupId>jakarta.platform</groupId>
        <artifactId>jakarta.jakartaee-api</artifactId>
        <version>9.1.0</version>
        <scope>provided</scope>
    </dependency>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71863324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档