【问题标题】:How to modify TestNG assertEquals?如何修改TestNG assertEquals?
【发布时间】:2018-08-16 14:16:46
【问题描述】:

我有实际和预期的对象,每个对象都包含一些数据成员。对于一个数据成员,我需要做一个包含检查而不是等于检查,其余的,等于检查完成。有没有办法做到这一点?

【问题讨论】:

  • 没有智能的方法可以让 assertEquals 自行识别和检查,您必须通过代码以编程方式处理。

标签: testng assert assertions


【解决方案1】:

不是隐含的,但您至少有以下 2 个选项:

  • 使用TestNG的assertTrue
  • 使用其他库,例如 HamcrestAssertJ

依赖关系:

    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-core</artifactId>
        <version>1.3</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>3.9.0</version>
        <scope>test</scope>
    </dependency>

代码:

import org.testng.annotations.Test;

import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.testng.Assert.assertTrue;

public class MyTest {

    @Test
    public void shouldCheckStringContains() {
        String myString = "This is my string";

        // TestNG
        assertTrue(myString.startsWith("This") 
                && myString.contains("is") 
                && myString.contains("my") 
                && myString.endsWith("string"));

        // Hamcrest
        assertThat(myString, allOf(startsWith("This"),
                                   containsString("is"),
                                   containsString("my"),
                                   endsWith("string")));

        //AssertJ
        assertThat(myString).startsWith("This")
                            .contains("is")
                            .contains("my")
                            .endsWith("string");
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多