我知道有@Before
and @BeforeClass
,它们用于定义@Test
's 的固定装置。但是,如果我需要为每个设备使用不同的固定装置,我应该使用什么@Test
?
- 我应该在 中定义夹具
@Test
吗? - 我应该为每个创建一个测试类
@Test
吗?
我在这里寻求最佳实践,因为我认为这两种解决方案都不干净。使用第一个解决方案,我将测试初始化代码。使用第二种解决方案,我将打破“每个类一个测试类”的模式。
尖端:
我建议根据您需要的不同夹具创建一个单独的类。如果你有两个不同的灯具,你只需要创建两个不同的类(给他们一个方便的名字)。但我会再次考虑这一点,特别是关于固定装置的差异以及为什么不同。可能您正在进行一种集成测试而不是单元测试?
如果您确定您的夹具对于单个测试是唯一的,那么它属于@Test
方法。不过这并不典型。可能是它的某些部分是独一无二的,或者您没有正确参数化/提取它,但通常您会在测试之间共享大量相同的数据。
最终,夹具是测试的一部分。放置夹具@Before
被采用为 xUnit 模式,因为测试总是:
步骤 1 ( @Before
) 和 4 ( @After
) 在相关测试中被大量(至少部分)重用。由于 xUnit 非常重视测试独立性,它提供了固定方法来保证它们始终运行并正确地测试创建/销毁的数据。