我正在为一个实体创建一个单元测试,让我们说MyEntity。 为了测试,我使用了在测试中创建的这个实体的样本。 我知道测试必须彼此独立。 为此目的创建的示例对象怎么样? 测试是否也应与其使用的样本无关?
让我举个例子:
public class MyEntity {
private List<OtherEntity> otherEntities = new ArrayList<>();
...
}
public class MyEntityServiceTest {
private MyEntity myEntitySample;
private OtherEntity otherEntitySample;
@Before
public void setUp() throws Exception {
otherEntitySample = new OtherEntity();
otherEntitySample.setId(22);
myEntitySample = new MyEntity();
myEntitySample.setId(11);
myEntitySample.addOtherEntity(otherEntitySample);
}
@Test
public void findByOtherEntityId() {
MyEntity myEntityResult = myEntityService.findByOtherEntityId(otherEntitySample.getId());
assertEquals(myEntityResult.getOtherEntities().get(0).getId(), otherEntitySample.getId());
}
}
在这个例子中,我测试了找到的MyEntity对象的第一个OtherEntity项确实与被搜索对象具有相同id(22)的行为。在我的情况下这是正确的,因为我使用的示例实际上只有一个OtherEntity对象作为属性。
所以,我的测试在使用这些样本时通过。如果我要更改我的样本并使用一个MyEntity对象,该对象包含相同的OtherEntity对象,但是作为otherEntities列表中的第二个项目,则测试将失败,即使它不应该。
我应该保持原样,还是应该更改它以便测试方法的一般行为?
我希望这不会太混乱。