尝试将这种类型的assertEquals
与import static org.junit.jupiter.api.Assertions.*;
一起使用时出现错误
使用import static org.junit.Assert.*;
//import static org.junit.jupiter.api.Assertions.*;
import static org.junit.Assert.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
//import org.junit.Before;
//import org.junit.Test;
class isogramTest {
//isogram Isogram;
@BeforeEach
void setUp() throws Exception {
}
@Test
void test() {
assertEquals(true, isogram.isIsogram("Dermatoglyphics"));
assertEquals(true, isogram.isIsogram("isogram"));
assertEquals(false, isogram.isIsogram("moose"));
assertEquals(false, isogram.isIsogram("isIsogram"));
assertEquals(false, isogram.isIsogram("aba"));
assertEquals(false, isogram.isIsogram("moOse"));
assertEquals(true, isogram.isIsogram("thumbscrewjapingly"));
assertEquals(true, isogram.isIsogram(""));
}
}
答案 0 :(得分:1)
JUnit Jupiter当前不明确支持以下语句。
assertEquals(true, isogram.isIsogram("Dermatoglyphics"));
只要有这样的构造,就应该使用assertTrue(...)
,因为它确实存在于此类用例中。
例如,将以上内容更改为以下内容。
assertTrue(isogram.isIsogram("Dermatoglyphics"));
断言某物是false
的情况也一样:在此类用例中使用assertFalse(...)
。
如果您认为JUnit Jupiter应该为boolean
中的Boolean
和assertEquals(...)
提供明确支持,请open a ticket提出建议。
答案 1 :(得分:0)
很可能isIsogram()
返回Boolean
对象,而不是boolean
原语。
因此,歧义介于两者之间:
org.junit.jupiter.api.Assertions.assertEquals(boolean, boolean)
org.junit.jupiter.api.Assertions.assertEquals(Object, Object)
两者都可以应用,因为编译器可以自动装箱/拆箱原语/布尔对象。
在Junit4中,
org.junit.Assert
没有任何assertEquals(boolean, boolean)
方法,因此没有歧义。
从junit4迁移到junit5 / jupiter时可以解决的问题:
assertTrue
/ assertFalse
boolean
。Boolean.TRUE
/ Boolean.False
(boolean) isIsogram(...)