大型对象的junit对象初始化
在JUnit测试中,我们必须初始化大量的对象。我们在对象中有对象在对象中有对象。例如:大型对象的junit对象初始化,junit,Junit,在JUnit测试中,我们必须初始化大量的对象。我们在对象中有对象在对象中有对象。例如: A类{ 列表列表; } B类{ 列表cList; } C类{ 名单; } 正如您已经知道的,我们的setUp()方法可能会变得非常笨拙。此外,由于我们到处使用这些对象,我们创建了一个util类,它将创建一个a对象及其所有成员。因此,如果我们在JUnit中需要它,我们只需调用MyUtil.createA() 有没有更好/更简单的方法?也许还有另一种技术可以让这项任务不那么乏味 谢谢所以我经常遇到这个问题,而你
A类{
列表列表;
}
B类{
列表cList;
}
C类{
名单;
}
正如您已经知道的,我们的setUp()
方法可能会变得非常笨拙。此外,由于我们到处使用这些对象,我们创建了一个util类,它将创建一个a
对象及其所有成员。因此,如果我们在JUnit中需要它,我们只需调用MyUtil.createA()
有没有更好/更简单的方法?也许还有另一种技术可以让这项任务不那么乏味
谢谢所以我经常遇到这个问题,而你现在的做法就是解决这个问题的方法。然而,我发现了一个很好的模式(使用
参数供应商
),允许对每个级别进行详细控制。想象一下以下测试:
@Theory
public void testSetup1(@DefaultAList @DefaultBList @DefaultCList A a){...}
@Theory
public void testSetup2(@DefaultAList @DefaultBList @SomeOtherCList(config="blah") A a){...}
通过使用我的模式,您可以轻松地控制实例的整个结构。基本思想是您有一个TestSupplier
类,该类具有创建该类实例的静态方法。在TestSupplier
中,提供可由参数supplier
使用的注释,从而提供理论
。然后,这些选项允许您指定如何创建复杂的多级对象
下面是一个示例测试:
下面是整个示例项目,展示了如何设置TestSuppliers
:
以下是来自示例测试的示例测试:
@Theory
public void test1(
@DefaultTopBean @SingleMiddleBean @SingleValidBottomBean
TopBean topBean) {...}
@Theory
public void test2(
@DefaultTopBean @SingleMiddleBean @InvalidBottomBean
TopBean topBean) {...}
@Theory
public void test3(
@DefaultTopBean
@MiddleBeansWithState(states = { State.State1, State.State3 })
@MultipleValidBottomBean(count = 2)
TopBean topBean) {...}