配置错误:您必须为此@parameterizedTest配置至少一组参数

发布于 2025-01-18 05:02:31 字数 1862 浏览 4 评论 0原文

我正在尝试运行接口的测试,并阅读应该使用@ParameterizedTest。错误如下所示。

这是我的代码:

package de.rhenus.fl.dpx.commons.mapstruct.date;

import de.rhenus.fl.dpx.commons.business.micronaut.date.EmbeddedOffsetDateTimeOracle;
import org.junit.jupiter.params.ParameterizedTest;

import java.time.OffsetDateTime;

import static org.hamcrest.MatcherAssert.assertThat;

class EmbeddedOffsetDateTimeOracleMapperTest {
    final EmbeddedOffsetDateTimeOracleMapper mapper;
    final OffsetDateTime NOW = OffsetDateTime.now();


    public EmbeddedOffsetDateTimeOracleMapperTest(EmbeddedOffsetDateTimeOracleMapper mapper) {
        this.mapper = mapper;
    }

    @ParameterizedTest
    void embeddedOffsetDateTimeOracleToOffsetDateTime() {
        EmbeddedOffsetDateTimeOracle embeddedOffsetDateTimeOracle = new EmbeddedOffsetDateTimeOracle();
        embeddedOffsetDateTimeOracle.setOffset(0);
        embeddedOffsetDateTimeOracle.setValue(NOW.toLocalDateTime());

        OffsetDateTime result = mapper.map(embeddedOffsetDateTimeOracle);
        assertThat("Same OffsetDateTime", result.equals(NOW));

    }

    @ParameterizedTest
    void offsetDateTimeToEmbeddedOffsetDateTimeOracle() {
        EmbeddedOffsetDateTimeOracle embeddedOffsetDateTimeOracle = new EmbeddedOffsetDateTimeOracle();
        embeddedOffsetDateTimeOracle.setOffset(0);
        embeddedOffsetDateTimeOracle.setValue(NOW.toLocalDateTime());

        OffsetDateTime result = mapper.map(embeddedOffsetDateTimeOracle);
        assertThat("Same OffsetDateTime", result.equals(NOW));

    }
}

这是我的错误:

配置错误:您必须为此@parameterizedTest配置至少一组参数 org.junit.platform.commons.commons.preconditionviolationException:配置错误:您必须为此@parameterizedTest配置至少一组参数 at org.junit.platform.commons.util.util.preconditions.condition(Proconditions.java:281)

我需要在哪里传递参数以进行测试?

I am trying to run tests of a interface and read that i should use @ParameterizedTest. The error is shown below.

Here's my code:

package de.rhenus.fl.dpx.commons.mapstruct.date;

import de.rhenus.fl.dpx.commons.business.micronaut.date.EmbeddedOffsetDateTimeOracle;
import org.junit.jupiter.params.ParameterizedTest;

import java.time.OffsetDateTime;

import static org.hamcrest.MatcherAssert.assertThat;

class EmbeddedOffsetDateTimeOracleMapperTest {
    final EmbeddedOffsetDateTimeOracleMapper mapper;
    final OffsetDateTime NOW = OffsetDateTime.now();


    public EmbeddedOffsetDateTimeOracleMapperTest(EmbeddedOffsetDateTimeOracleMapper mapper) {
        this.mapper = mapper;
    }

    @ParameterizedTest
    void embeddedOffsetDateTimeOracleToOffsetDateTime() {
        EmbeddedOffsetDateTimeOracle embeddedOffsetDateTimeOracle = new EmbeddedOffsetDateTimeOracle();
        embeddedOffsetDateTimeOracle.setOffset(0);
        embeddedOffsetDateTimeOracle.setValue(NOW.toLocalDateTime());

        OffsetDateTime result = mapper.map(embeddedOffsetDateTimeOracle);
        assertThat("Same OffsetDateTime", result.equals(NOW));

    }

    @ParameterizedTest
    void offsetDateTimeToEmbeddedOffsetDateTimeOracle() {
        EmbeddedOffsetDateTimeOracle embeddedOffsetDateTimeOracle = new EmbeddedOffsetDateTimeOracle();
        embeddedOffsetDateTimeOracle.setOffset(0);
        embeddedOffsetDateTimeOracle.setValue(NOW.toLocalDateTime());

        OffsetDateTime result = mapper.map(embeddedOffsetDateTimeOracle);
        assertThat("Same OffsetDateTime", result.equals(NOW));

    }
}

Here's my error:

Configuration error: You must configure at least one set of arguments for this @ParameterizedTest
org.junit.platform.commons.PreconditionViolationException: Configuration error: You must configure at least one set of arguments for this @ParameterizedTest
at org.junit.platform.commons.util.Preconditions.condition(Preconditions.java:281)

Where do I need to pass parameters to run my test?

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

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

发布评论

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

评论(1

谎言 2025-01-25 05:02:31

对于Junit5,对于每个参数化测试,您需要传递一个值集。您可以参考相同的文档: https ://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests

就您而言,这应该是以下内容:


    @ParameterizedTest
    @ValueSource(ints = { -3, 0, 1, 2, 3 })
    void offsetDateTimeToEmbeddedOffsetDateTimeOracle(int offset) {
        EmbeddedOffsetDateTimeOracle embeddedOffsetDateTimeOracle = new EmbeddedOffsetDateTimeOracle();
        embeddedOffsetDateTimeOracle.setOffset(offset);
        embeddedOffsetDateTimeOracle.setValue(NOW.toLocalDateTime());

        OffsetDateTime result = mapper.map(embeddedOffsetDateTimeOracle);
        assertThat("Same OffsetDateTime", result.equals(NOW + offset));

    }

For Junit5, for each parameterized test, you would need to pass a value set. You can refer to the documentation for the same: https://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests .

In your case, it should be something as follow:


    @ParameterizedTest
    @ValueSource(ints = { -3, 0, 1, 2, 3 })
    void offsetDateTimeToEmbeddedOffsetDateTimeOracle(int offset) {
        EmbeddedOffsetDateTimeOracle embeddedOffsetDateTimeOracle = new EmbeddedOffsetDateTimeOracle();
        embeddedOffsetDateTimeOracle.setOffset(offset);
        embeddedOffsetDateTimeOracle.setValue(NOW.toLocalDateTime());

        OffsetDateTime result = mapper.map(embeddedOffsetDateTimeOracle);
        assertThat("Same OffsetDateTime", result.equals(NOW + offset));

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