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