这是我的代码:
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);
}
}
但是当我运行测试时,它失败了,我得到...
<块引用>预期
请指点一下?
顺便说一句,我试图将所有这些都复制到 Eclipse,但它抛出了一大堆额外的错误。如果有人能告诉我为什么那也会很棒。 https://i.imgur.com/iES6owx.jpg
TIA
答案 0 :(得分:1)
因为您将 String 与 Concatenate 对象进行比较。所以它不会匹配。
最好在 Concatenate 类中创建一个 concat 方法并断言该方法的输出
public String concat() {
return firstWord + " " + secondWord;}
比较
<块引用>assertEquals(expectedResult, testResult.concat());
希望这能澄清您的问题
答案 1 :(得分:0)
测试失败,因为 expectedResult 是一个 String 而 testResult 是 Concatenate 的一个实例。它们不相等。
"Hello world".equals(testResult) == false
答案 2 :(得分:-1)
“我明白了,谢谢,但是请问有什么解决方案?因为当我尝试让我的 Concatenate 函数返回一个字符串时,我得到了缺少 return 语句的错误”
你是在说你的构造函数吗?如果是它不能有回报。 您可以覆盖 equals 方法然后更改您的测试@Override
public String toString() {
return firstWord +" "+secondWord;
}
assertEquals(expectedResult, testResult.toString());