我正在尝试创建我的第一个测试。 我必须证明某个方法返回了ContextLambda类型,我正在使用assertSame函数对其进行测试,但是我的测试失败了,我不知道使用什么assert来测试它,而assertEquals也失败了。 我的测试是这样的:
@Test
public void testCanCreateContextForLambda() {
ContextFactory factory = new ContextFactory();
LambdaContext context = factory.forLambda(
new FakeRequest(),
new FakeResponse(),
new FakeLambda()
);
assertSame(LambdaContext.class, context);
}
答案 0 :(得分:2)
尝试使用instanceof
和assertTrue
:
包括assertTrue导入:
import static org.junit.Assert.assertTrue;
然后进行实际测试:
@Test
public void testCanCreateContextForLambda() {
ContextFactory factory = new ContextFactory();
LambdaContext context = factory.forLambda(
new FakeRequest(),
new FakeResponse(),
new FakeLambda()
);
assertTrue(context instanceof LambdaContext);
}
只要context
是LambdaContext
类型的类(例如,使用接口使其不重要),该断言将是微不足道的,并且始终为真。
答案 1 :(得分:1)
您对assertSame
的断言是对LambdaContext.class == context
的断言。这永远不会是真的。
您可以通过多种方式更正断言
context instanceof LambdaContext
无关紧要(总是如此)context.getClass() == LambdaContext.class
几乎是微不足道的(可能永远是真的)可以使用junit5库的assertSame
和assertTrue
编写这些测试(请参见其他答案)。
我的最佳建议:删除此测试,并编写一个断言context
的非平凡属性的测试。