是否有针对常见 Java 接口的预构建 JUnit 测试存储库?

发布于 2024-09-27 06:51:17 字数 167 浏览 2 评论 0原文

这学期我正在教授数据结构课程,我们根据给定的组件接口构建了大量的 JUnit 测试。然后,我们使用 setUp 插入特定的具体实现。在大多数情况下,我们正在实现 java.util 接口。是否有针对常见 Java 组件的一套通用的严格 JUnit 测试,或者某种可以减轻测试用例设计难度的框架?

I'm teaching a data structures class this semester and we build gobs of JUnit tests given component interfaces. We then use setUp to plug in a specific concrete implementation. In most cases we are implementing java.util interfaces. Is there a common set of rigorous JUnit tests for common Java components, or some sort of framework that makes designing the test cases less painful?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

葬﹪忆之殇 2024-10-04 06:51:17

Hamcrest 提供了多个特定于地图和集合的匹配器。
您可以在教程中找到它们。

(JUnit 4.x 包含 Hamcrest)

示例代码:

import static org.junit.Assert.*;
import static org.junit.matchers.JUnitMatchers.*;
import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;

public class DummyTest{

    @Test
    public void someTest(){

        final Collection<Integer> coll = Arrays.asList(1, 2, 3, 4, 5);
        assertThat(coll, hasItems(5, 4, 3, 2, 1));
        assertThat(coll, not(hasItems(6)));
        assertThat(coll,
            both(
                is(List.class)
            ).and(
                equalTo(
                    Arrays.asList(
                        0x1,0x2,0x3,0x4,0x5
                    )
            )
        ));

    }



}

您的主要起点是这些便利类:

Hamcrest provides several matchers that are specific to Maps and Collections.
You can find them in the tutorial.

(JUnit 4.x contains Hamcrest)

Sample code:

import static org.junit.Assert.*;
import static org.junit.matchers.JUnitMatchers.*;
import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;

public class DummyTest{

    @Test
    public void someTest(){

        final Collection<Integer> coll = Arrays.asList(1, 2, 3, 4, 5);
        assertThat(coll, hasItems(5, 4, 3, 2, 1));
        assertThat(coll, not(hasItems(6)));
        assertThat(coll,
            both(
                is(List.class)
            ).and(
                equalTo(
                    Arrays.asList(
                        0x1,0x2,0x3,0x4,0x5
                    )
            )
        ));

    }



}

Your main starting point would be these convenience classes:

手心的温暖 2024-10-04 06:51:17

出于这些目的,模拟可能是单元测试使用“具体”实现的最简单方法。最好的之一是 Mockito

For these purposes mocking may be the easiest way of having "concrete" implementations used by unit tests. One of the best is Mockito.

美羊羊 2024-10-04 06:51:17

您可以了解 Apache Harmony 和 GNU Classpath 如何对它们各自的 java.util 类的洁净室实现进行单元测试。

You could look at how Apache Harmony and GNU Classpath unit test their respective clean-room implementations of the java.util classes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文