我的类如下,它接收一个字符串并使用它创建一个对象的arraylist。 我不确定如何测试它。
public class Company{
private String id;
private String name;
....
}
public List<Company> retrieve(String factories) {
String[] fac = factories.split(",");
List<Company> comp;
comp = new ArrayList<>();
for (int i = 0; i < fac.length - 1; i++) {
comp.add(new Company(fac[i], fac[i]));
}
return comp;
}
JUnitTest
@Test
public void testRetrieve() {
System.out.println("retrieve");
String factories = "a,b,c";
Transact instance = new Transact();
List<Company> expResult = null; //<<<how to define this?
List<Company> result = instance.retrieveData(factories);
assertEquals(expResult, result);
}
答案 0 :(得分:2)
定义您的预期结果
List<Company> expResult = null;// it shouldn't be null
它应该是从您的方法返回的内容。
让我们说当你通过
String factories = "some sting";
应该从您的方法返回List x
,然后创建List x
你可以尝试这样的事情。
@Test
public void testRetrieve() {
System.out.println("retrieve");
String factories = "a,b,c";
Transact instance = new Transact();
List<Company> expResult = new ArrayList<>();
Company com1=new Company("a","a");
Company com2=new Company("b","b");
Company com3=new Company("c","c");
expResult.add(com1);
expResult.add(com2);
expResult.add(com3);
List<Company> result = instance.retrieveData(factories);
assertEquals(expResult, result);
}
我认为现在你可以编写自己的测试用例了。
答案 1 :(得分:1)
您应该根据单元测试中的预期结果测试实际结果。
所以你&#34;假设&#34;如果你的课程写得正确(那是你检查的内容),那么你应该得到你所期望的公司课程列表,这就是结果。
我会给你一个更简单的例子。 让我们假设你要用单元测试来检查产生两个数字之和的方法:
int sum(int a, int b) {
return a + b;
}
因此,单元测试应提供输入并根据实际输出验证预期输出。
所以你走了:
// unit test
int expectedOutput = 10;
int actualOutput = sum(3,7);
assertEquals(expectedOutput, actualOutput);
换句话说,你&#34;确保&#34;根据您的输入,该方法生成的actualOutput符合您的期望。这是检查方法是否正确实现的方法。
现在让我们回到你的榜样。 事实上,你必须验证&#34;公司&#34;课程是正确的。
因此,您的预期输出也是一个列表,问题实际上是您如何将实际的公司列表与预期的公司列表进行比较。
在Java中,鉴于您已经定义了&#34;等于&#34;类#34;公司&#34;上的方法,你可以安全地检查assertEquals(它应该适用于列表,给你使用像ArrayList这样的东西)
预期结果可以像这样生成:
List<Company> expectedResult = Arrays.asList(new Company(...), new Company(...));
希望这有助于和快乐的单元测试:)
答案 2 :(得分:0)
我喜欢为每个场景创建不同的方法。您已经测试了空白列表&#34;场景。以下是其他一些内容:
// The happy path
@Test
public void testMultipleCompanies() {
Transact instance = new Transact();
List<Company> companies = instance.retrieveData("firstCompany,secondCompany");
assertTrue(companies.size() == 2);
assertEquals(companies.get(0).getId().equals("firstCompany");
assertEquals(companies.get(0).getName().equals("firstCompany");
assertEquals(companies.get(1).getId().equals("secondCompany");
assertEquals(companies.get(1).getName().equals("secondCompany");
}
// The null string scenario
@Test(expected=NullPointerException.class)
public void testNull() {
Transact instance = new Transact();
instance.retrieveData(null);
}