所以我遇到了很多这样的问题,而你的方法就是解决方案。但是,我发现了一个很好的模式(使用ParameterSupplier
),它允许对每个级别进行详细控制。想象一下以下测试:
@Theory
public void testSetup1(@DefaultAList @DefaultBList @DefaultCList A a){...}
@Theory
public void testSetup2(@DefaultAList @DefaultBList @SomeOtherCList(config="blah") A a){...}
通过使用我的模式,您可以轻松控制实例的整个结构。基本思想是你有一个TestSupplier
类,它有创建类实例的静态方法。在TestSupplier
中提供可以被ParameterSupplier
and 因此使用的注释Theories
。然后,这些允许您指定如何创建复杂的多级对象。
这是一个示例测试:ExampleTest.java
这是整个示例项目,展示了如何设置TestSuppliers
:TestExamples
这是来自ExampleTest的示例测试:
@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) {...}