小编KeL*_*TaR的帖子

如何在 Gradle 中运行 JUnit 5 和 JUnit 4 测试套件?

我的代码中有两种类型的测试,以 UnitTest 和 IntegrationTest 结尾。当然,有一些遗留的 JUnit 4 测试和应该用 JUnit 5 编写的新测试。

我想要的是:

可以从 IDE (IntelliJ IDEA) 运行的 UnitTestSuite 和 IntegrationTestSuit 类,每个类都有以类名结尾的测试过滤器。此外,我希望两个不同的 gradle 任务各自运行自己的一组测试(理想情况下基于套装,或者至少基于类名)。

我试过的:

这个测试套件在 IDE 中运行良好,据我所知,它应该同时运行 JUnit 4 和 JUnit 5 测试。但是,这种方法似乎更像是一种解决方法,而不是实际的套件支持。

@RunWith(JUnitPlatform.class)
@IncludeClassNamePatterns({ "^.*UnitTest$" })
public class UnitTestSuite {
}
Run Code Online (Sandbox Code Playgroud)

我也创建了这个 Gradle 任务,但它没有运行任何测试对我说:

WARNING: Ignoring test class using JUnitPlatform runner

test { Test t ->

    useJUnitPlatform()

    include "UnitTestSuite.class"
}
Run Code Online (Sandbox Code Playgroud)

那么是否有一个解决方案可以同时运行 JUnit 4 和 JUnit 5 测试,并从 IDE 和 Gradle 任务中按名称过滤(收集到套装中)?

java junit4 gradle junit5

7
推荐指数
1
解决办法
4622
查看次数

如何在Hibernate+Spring+JUnit中测试事务回滚

我正在尝试测试出现问题时回滚事务的机制。我读了很多类似的主题,但没有任何帮助我。这是我尝试的:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "file:src/main/webapp/WEB-INF/rest-servlet.xml" })
@Transactional
public class TagDaoImplTest extends DatabaseTestCase {

    private static final String FLAT_XML_DATASET = "FlatXmlDataSet.xml";

    @Autowired
    private TagDao tagDao;
    @Autowired
    private SessionFactory sessionFactory;

    @Before
    public void setUp() throws Exception {
        DatabaseOperation.REFRESH.execute(getConnection(), getDataSet());
    }

    @Test
    public void testAddWithRollback() throws Exception {
        addWithRollback("testTagToAdd"); //i suppouse that we tried to add, but somthing went wrong and transaction was rolled back
        final Tag testTagToAdd = tagDao.findByTag("testTagToAdd"); // so db must be without changes and i check this
        assertNull(testTagToAdd); …
Run Code Online (Sandbox Code Playgroud)

java junit spring hibernate transactions

6
推荐指数
1
解决办法
2721
查看次数

Spring ReflectionTestUtils 不设置静态最终字段

我有一个像这样的静态最终字段:

class SomeClass {
    static final String CONST = "oldValue";
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试像这样在测试中更改该字段:

ReflectionTestUtils.setField(SomeClass.class, "CONST", "newValue");
Run Code Online (Sandbox Code Playgroud)

但它不起作用并说

java.lang.IllegalStateException: Could not access method: Can not set static final java.lang.String field
Run Code Online (Sandbox Code Playgroud)

java reflection spring

4
推荐指数
1
解决办法
8376
查看次数

标签 统计

java ×3

spring ×2

gradle ×1

hibernate ×1

junit ×1

junit4 ×1

junit5 ×1

reflection ×1

transactions ×1