Java 使用junit比较字符串不需要';即使每个字符都已正确标识,也不能断言为true
我不明白为什么我的单元测试失败了Java 使用junit比较字符串不需要';即使每个字符都已正确标识,也不能断言为true,java,string,junit,Java,String,Junit,我不明白为什么我的单元测试失败了 assertTrue( (String) temp=="c+(d/f)-e"); 即使我连续打印temp的内容,也是一样的 这是密码 单元测试 import static org.junit.Assert.*; import org.junit.Test; public class LexerTest { @Test public void testGetInExpression(){ //------
assertTrue( (String) temp=="c+(d/f)-e");
即使我连续打印temp的内容,也是一样的
这是密码
单元测试
import static org.junit.Assert.*;
import org.junit.Test;
public class LexerTest {
@Test
public void testGetInExpression(){
//------
Lexer lex=new Lexer("a+b*(c+(d/f)-e)-g");
//--This test passes
assertTrue((String)lex.getLexStr()=="a+b*(c+(d/f)-e)-g");
//------
for(int i=0;i<5;i++){
lex.getNext();
}
//----------------
//Method returns a in-expression (or a substring within first parantheses)
Lexer sub=lex.getInExpression();
String temp=sub.getLexStr(); //returns a type String
System.out.println(temp);
System.out.println(temp.length());
//printing out each character of 'temp'
for(int i=0;i<temp.length();i++){
System.out.print(i);
System.out.print(" = ");
System.out.println(temp.charAt(i));
//prints: the string
// 0 = c
// 1 = +
// ...
// ..
// 8 = e
}
//The following fails (mysteriously!!)
assertTrue( (String) temp=="c+(d/f)-e");
//assertTrue( (Character)lex.getNext()=='-');
}
}
import static org.junit.Assert.*;
导入org.junit.Test;
公共类词汇测试{
@试验
public void testGetInExpression(){
//------
Lexer-lex=新的Lexer(“a+b*(c+(d/f)-e)-g”);
//--这个测试通过了
assertTrue((String)lex.getLexStr()=“a+b*(c+(d/f)-e)-g”);
//------
对于(int i=0;i您应该使用assertEquals,而不是assertTrue)。
与==进行比较对于不同的字符串对象不好。您应该使用assertEquals,而不是assertTrue。
与==进行比较对于不同的字符串对象不好。您应该使用assertEquals,而不是assertTrue。
与==进行比较对于不同的字符串对象不好。您应该使用assertEquals,而不是assertTrue。
与==比较不适合不同的字符串对象。在比较字符串时始终使用“等于”,而不是“==”
“==”比较引用,而“等于”比较值,这是您想要的。在比较字符串时始终使用“等于”,而不是“==”
“==”比较引用,而“等于”比较值,这是您想要的。在比较字符串时始终使用“等于”,而不是“==”
“==”比较引用,而“等于”比较值,这是您想要的。在比较字符串时始终使用“等于”,而不是“==”
“==”比较引用,而“equals”则比较所需的值。java中的=
运算符检查两个对象(在本例中为字符串)是相同的引用。如果相等字符串的构造不同,则不能保证它们将占用相同的引用。相反,应使用等于(对象)
方法
在JUnit中,这可以通过使用assertEquals
方法轻松完成:
assertEquals("c+(d/f)-e", temp);
java中的=
运算符检查两个对象(在本例中为-strings)是否是相同的引用。如果相等的字符串以不同的方式构造,则不能保证它们将占用相同的引用。相反,应使用相等(Object)
方法
在JUnit中,这可以通过使用assertEquals
方法轻松完成:
assertEquals("c+(d/f)-e", temp);
java中的=
运算符检查两个对象(在本例中为-strings)是否是相同的引用。如果相等的字符串以不同的方式构造,则不能保证它们将占用相同的引用。相反,应使用相等(Object)
方法
在JUnit中,这可以通过使用assertEquals
方法轻松完成:
assertEquals("c+(d/f)-e", temp);
java中的=
运算符检查两个对象(在本例中为-strings)是否是相同的引用。如果相等的字符串以不同的方式构造,则不能保证它们将占用相同的引用。相反,应使用相等(Object)
方法
在JUnit中,这可以通过使用assertEquals
方法轻松完成:
assertEquals("c+(d/f)-e", temp);
这很有效。非常感谢!那很有效。非常感谢!那很有效。非常感谢!那很有效。非常感谢!那也很有效。非常感谢!那也很有效。非常感谢!那也很有效。非常感谢!那也很有效。非常感谢!