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数据如何处理失败的查找。此相关问题表明,通过设计,查找失败有时会延迟,这与您遇到的问题完全相同: