Java 如何编写junit测试以查看返回的内容?
对编写单元测试来说非常陌生。 有人能帮我写一个测试吗Java 如何编写junit测试以查看返回的内容?,java,junit,Java,Junit,对编写单元测试来说非常陌生。 有人能帮我写一个测试吗 public List<PspTransaction> mapToDomainList(List<PspTransactionEntity> entityList) { List<PspTransaction> domainList = new ArrayList<PspTransaction>(); for (PspTransactionEntity entit
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;
公共列表映射到域列表(列表entityList){
List domainList=新建ArrayList();
for(PspTransactionEntity实体:entityList){
添加(映射(实体,new PspTransaction());
}
返回域名列表;
我想知道哪些东西是好的测试和一个简单的指南,这样我可以为未来学习。此外,我真的想知道如何看看域名列表是否返回。
它是assertTrue吗?看起来总是会返回
domainList
,因为您只是在mapToDomainList
方法中创建了一个新的域列表。因此您需要使用类似assertFalse(returnedDomainList.isEmpty())的内容检查它是否为空;
如果entityList
不为空,则此操作有效
如果
entityList
为空,您可以断言返回的列表也是空的。一般来说,您可以在这里测试几件事情
映射
函数的单独测试中完成null
传递给函数- 以及注释(当然,您可以将
替换为您期望的异常类型)ExpectedException
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);
}
import static org.assertj.core.api.Assertions.*;
...
private TestSubject TestSubject=new TestSubject();//被测类的实例(省略实际类名)
...
@试验
public void应该返回空列表(){
//安排
列表输入=新的ArrayList();
//表演
List mapResult=testSubject.mapToDomainList(输入);
//断言
assertThat(mapResult.size()).isEqualTo(0);
}
@测试(预期为java.lang.NullPointerException.class)
public void应该\u抛出\u null\u指针\u异常(){
//表演
List mapResult=testSubject.mapToDomainList(空);
}
因此,如果我从代码向后到测试,我想我会希望沿着这些路线进行测试。想想快乐的路径,还有你的边缘案例,比如当你通过null时会发生什么,等等。这有意义吗?希望有帮助!选中此项你可以使用assertNotNull(列表);你不应该在这里测试的一件事是
map(…,…)
。这需要在一个单独的测试中,这样如果entityList不为空,测试将失败?如何编写它以通过两次测试,而不管结果如何?@BlackMagma您应该有两个测试。在许多情况下,为每个测试运行创建一个新的TestSubject
是有意义的;毕竟,它可能会保持一个状态,这将使一个测试生效ence另一个。同意@blalasaadri。我不确定我所说明的行为是否与用at-Before注释的方法实例化测试主题有实质性的不同。好吧,无论如何,我只是想在这里传达这个想法。在@Before方法中初始化它也应该起作用。为了保持简单,最好不过,在方法中初始化它;这可能会避免OP出现奇怪的错误,并且很容易理解。为了便于说明,在测试方法中实例化测试主题中的对象是可以的。然而,明显的缺点是,下一个面临此示例的编码人员可能会滥用复制/粘贴EST也是“干”的。