第一次写junit:需要建议

  • 本文关键字:junit 第一次 java junit
  • 更新时间 :
  • 英文 :


我写了一个小代码来对其中一个名为"Type"的字段进行排序,现在我必须为它编写Junit测试。我是一个全新的写作测试,所以我想知道我是否考虑了多少条件。例如,我为以下内容编写了测试代码:-

  1. testCompareBothNull
  2. testComparePojo1NullPoj02NotNull
  3. testComparePojo1NotNullPoj02Null
  4. 测试比较Pojo1NotNullPoj02NotNull

所以我需要你的建议。我提前感谢你。

根据经验,这是关于测试的,就像一个工具,它可以帮助程序员确保您编写的代码按预期运行。

考虑到这一点,您希望测试哪些输入,以便确保您的代码正常工作?

你说:

我写了一个小代码来对一个名为"Type"的字段进行排序

所以这段代码一定是用某种方法编写的,对吧?

假设你有这样的东西:public List<MyObject> sort(List<MyObject> input),你可以在以下情况下进行验证:

  1. 通过null,结果是什么,是预期的吗
  2. 通过空列表,结果是什么,是预期的吗
  3. Pass List有一个元素-它会排序吗
  4. 具有具有MyObject#type字段null的元素的过程列表。结果是预期的吗
  5. 已排序的通行证列表/
  6. 未排序的通行证列表,请确保现在已排序
  7. 具有相同对象的过程列表(sort(listOf(a, a, a, a))
  8. 带有null-s:(sort(null, new MyObject(..), null)的通行证列表

总的来说,这取决于你决定你能走多远,才能感觉到代码是有效的。

由于您是单元测试框架的新手,我建议您查看数据驱动测试,即DDT

数据驱动测试通常意味着使用多组数据执行一组步骤。在这里,您可以使用DataProvider创建数据,并将它们作为参数传递给测试方法,从而避免为测试用例编写多余的代码行。

TestNG是一个流行的框架。

所以在你的场景中,你只需要写一个测试用例

@Test(dataProvider = "type-null-check-Data")
public void test(Foo foo1, Foo foo2){
//Invocation of actual code with foo1 & foo2
//The scenarios can be
// 1. foo1 is null
// 2. foo2 is null
// 3. foo1.type is null
// 4. foo2.type is null
} 

场景创建如下

@DataProvider(name="type-null-check-Data")
public Object[][] dataProviderMethod() {
Foo foo1 = new Foo();
foo1.setType(null);
Foo foo2 = new Foo();
foo2.setType("anyValue);
Foo foo3 = new Foo();
foo3.setType("anyValue");
return new Object[][] { 
{null, null},
{null, foo1},
{foo1, null},
{foo2, foo3},
};
}

谢谢大家。你们太棒了。非常有用的评论。现在我有了一个想法,该何去何从。我以前从未写过单元测试代码;只是手动测试页面或应用程序,所以我不确定该涵盖什么或不涵盖什么,但是的,我现在知道编写代码进行测试也是开发的重要组成部分。

最新更新