微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试编写 Junit 测试,但失败了

如何解决尝试编写 Junit 测试,但失败了

这是我的代码

Concatenate.java

package concatenate;

import java.util.Scanner;

public class Concatenate {
    private static String firstWord;
    private static String secondWord;

    public Concatenate(String firstWord,String secondWord) {
        Concatenate.firstWord = firstWord;
        Concatenate.secondWord = secondWord;
    }

    public String getFirst() {
        return firstWord;
    }

    public String getSecond() {
        return secondWord;
    }

    public static Concatenate something() {
        Scanner myObj = new Scanner(system.in);
        System.out.println("Enter first word");
        firstWord = myObj.nextLine();
//        Scanner newObj = new Scanner(system.in);
        System.out.println("Enter second word");
        secondWord = myObj.nextLine();
        return new Concatenate(firstWord,secondWord);
    }

    public static void main(String[] args) {
        Concatenate result = something();
        System.out.println(result.getFirst() + " " + result.getSecond());
    }

}

ConcatenateTest.java

package concatenate;

import org.junit.Test;
import static org.junit.Assert.*;

public class ConcatenateTest {

    public Concatenatetest() {
    }

    @Test
    public void testMain() {
        String firstWord = "Hello";
        String secondWord = "world";
        String expectedResult = "Hello world";
        Concatenate testResult = new Concatenate(firstWord,secondWord);
        assertEquals(expectedResult,testResult);
        assertEquals(1,1);
    }
}

但是当我运行测试时,它失败了,我得到...

预期 但被 concatenate.Concatenate@[alphanumeric string]

请指点一下?

顺便说一句,我试图将所有这些都复制到 Eclipse,但它抛出了一大堆额外的错误。如果有人能告诉我为什么那也会很棒。 https://i.imgur.com/iES6owx.jpg

TIA

解决方法

因为您将 String 与 Concatenate 对象进行比较。所以它不会匹配。

最好在 Concatenate 类中创建一个 concat 方法并断言该方法的输出

public String concat() {
    return firstWord + " " + secondWord;}

比较

assertEquals(expectedResult,testResult.concat());

希望这能澄清您的问题

,

测试失败,因为 expectedResult 是一个 String 而 testResult 是 Concatenate 的一个实例。它们不相等。

"Hello world".equals(testResult) == false
,

“我明白了,谢谢,但是请问有什么解决方案?因为当我尝试让我的 Concatenate 函数返回一个字符串时,我得到了缺少 return 语句的错误”

你是在说你的构造函数吗?如果是它不能有回报。 您可以覆盖 equals 方法然后更改您的测试
@Override
public String toString() {
    
    return firstWord +" "+secondWord;
}


assertEquals(expectedResult,testResult.toString());

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。