Junit 当每个断言都在一个测试中时,测试通过,但在拆分时失败
我有以下代码:Junit 当每个断言都在一个测试中时,测试通过,但在拆分时失败,junit,spring-boot,spring-data,Junit,Spring Boot,Spring Data,我有以下代码: @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = TRConfig.class) public class ARepositoryTest { @Autowired ARepository aRepository; private A a = new A("value"); @Before public void setu
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = TRConfig.class)
public class ARepositoryTest {
@Autowired
ARepository aRepository;
private A a = new A("value");
@Before
public void setup() {
aRepository.save(a);
}
@Test
public void findByValue1() {
assertEquals(a, aRepository.findByValue("value"));
}
@Test
public void findByValue2() {
assertEquals(null, aRepository.findByValue("inv"));
}
}
我在第二次测试中有以下错误,我不知道第一次是否通过,因为第二次是第一次运行的测试:
org.springframework.orm.jpa.JpaObjectRetrievalFailureException: Unable to find ...model.a.A with id 10; nested exception is javax.persistence.EntityNotFoundException: Unable to find model.a.A with id 10
但当我这样做时,测试通过了:
@Test
public void findByValue() {
assertEquals(a, aRepository.findByValue("value"));
assertEquals(null, aRepository.findByValue("inv"));
}
为什么??我该怎么做才能让它正常运行
这是我的配置:
@EnableAutoConfiguration
@EnableJpaRepositories(basePackageClasses = ARepository.class)
@EntityScan(basePackageClasses = A.class)
@Import({ DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class })
public class TRConfig {
}
尝试将
@Transactional
添加到ARepositoryTest
上。完成后,仍然无法正常工作,我对Spring一无所知;但我想知道:问题可能是你的atBefore。。。当您有两个测试时运行两次,但当它们在同一个测试中时仅运行一次?我想说的是:你有没有试着把那句话从以前的。。。直接在你的测试方法中;然后在那里运行两次?或者您应该在之后添加一个(at)以清除存储库,因为您将在执行的每个测试中添加另一条记录。这看起来不像是测试问题,而是spring数据如何处理失败的查找。此相关问题表明,通过设计,查找失败有时会延迟,这与您遇到的问题完全相同: