编写单元测试非常新。 有人可以帮我写一个测试吗
public List<PspTransaction> mapToDomainList(List<PspTransactionEntity> entityList) {
List<PspTransaction> domainList = new ArrayList<PspTransaction>();
for (PspTransactionEntity entity : entityList) {
domainList.add(map(entity, new PspTransaction()));
}
return domainList;
我想知道哪些东西是好的测试和一个简单的指南,所以我可以学习未来。此外,我真的想知道如何查看是否返回了domainList。 是断言吗?
答案 0 :(得分:1)
一般来说,你可以在这里测试几件事。
map
函数的单独测试中完成。null
传递给该函数。有助于您完成这些任务的方法是:
ExpectedException
替换为您期望的例外类型。答案 1 :(得分:1)
我鼓励您尝试先考虑您想要测试的结果,然后编写一些代码来进行测试通过(TDD)。这可以帮助您开发良好的界面和设计易于理解的类,甚至可以重复使用。
这里的一些经验法则是,您希望您的课程有一个责任和您的方法做一件事 - 实质上,它是KISS原则,但有一些特定的设计提示。此外,我喜欢考虑行为测试而不是方法测试 - 这是一个微妙的差异,我将难以解释!
在我考虑系统要做的事情之前,我有一个测试方法,所以我觉得这样做更难,但我会分享我的想法。我喜欢使用AssertJ断言。我只是想要这个,所以它没有看到编译器。
import static org.assertj.core.api.Assertions.*;
...
private TestSubject testSubject = new TestSubject(); // instance of the class under test (you omit the actual class name)
...
@Test
public void should_return_empty_list() {
// Arrange
List<PspTransactionEntity> input = new ArrayList<PspTransactionEntity>();
// Act
List<PspTransaction> mapResult = testSubject.mapToDomainList(input);
// Assert
assertThat(mapResult.size()).isEqualTo(0);
}
@Test(expected=java.lang.NullPointerException.class)
public void should_throw_null_pointer_exception() {
// Act
List<PspTransaction> mapResult = testSubject.mapToDomainList(null);
}
所以,如果我从代码向后工作到测试,我想我会想要测试。想想幸福的道路,还有你的边缘情况,比如你传递null时会发生什么等等。这有意义吗?希望它有所帮助!
答案 2 :(得分:0)
由于您只是在domainList
方法中创建了一个新的mapToDomainList
,因此总是会返回assertFalse(returnedDomainList.isEmpty());
。因此,您需要检查entityList
之类的内容是否为空
如果entityList
不为空,这将有效。
如果{{1}}为空,您可以声明返回的列表也是空的。