java - 使用抽象类进行通用测试

标签 java junit

我可以(我想更重要的是,我应该)在抽象类中包装通用 junit 测试吗?

例如,我有一组正在测试的类,它们都使用缓存 - 显然在那里进行测试以确保我实际上正确地缓存了东西会很好......测试代码几乎相同每个类,但有一些关于创建缓存对象的小细节。

做这样的事情可以吗?

abstract class Foo {
    Baz baz;

    @Before
    abstract void setUp();

    @Test
    public void testMyBaz() {
        // ...
    }

}

public class Bar extends Foo {
    void setUp() {
        // set my baz
    }

    // other, more specific tests
}

最佳答案

这样做是可以的,但在大多数情况下,当你需要它时,你只需要数据工厂,在 JUnit 中是这样完成的:

@RunWith(Parametrized.class)
public class SumTest {
    @Parameters
    public static Iterable<Object[]> data() {
        return Arrays.asList(new Object[][] {{1, 2, 3}, {3, 4, 7}});
    }

    private int a, b, sum;
    public SumTest(int a, int b, int sum) {
        this.a = a;
        this.b = b;
        this.sum = sum;
    }

    @Test
    public void testSum() {
        Assert.assertEquals(a + b, sum);
    }
}

关于java - 使用抽象类进行通用测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33174201/

相关文章:

java - 找到一个非常大的数字

java - REST API - GET 方法,输入参数作为正文中的 JAVA 对象

java - libGdx - 缩放组不会影响子级

java - 使用 Java Spring 3.0 @NumberFormat 注解

junit - 使用 WebTestClient 和 ControllerAdvice 单元测试 Spring Controller

spring - 如何使用具有不同数据的相同测试类执行 Spring Rest Controller 测试?

java - ApsectJ 在添加 @Transactional 注释时抛出异常

java - 如何在 Gradle 中设置构建以不将 JUnit 测试用例部署到 JBoss AS 7.1

java - 模拟新的 HttpClientErrorException.NotFound

java - 如何使用 PowerMock 和 EasyMock 模拟非静态私有(private)内部 java 类?