2
我正在與彈簧4.3.1.RELEASE
工作,我已在有關測試以下:如何爲特定的@Test指定SpringClassRule/SpringMethodRule的行爲?
@RunWith(Parameterized.class)
@ContextConfiguration(classes={RootApplicationContextConfig.class})
@Transactional
public class PersonaJdbcRepositoryTest {
@ClassRule
public static final SpringClassRule SPRING_CLASS_RULE= new SpringClassRule();
@Rule
public final SpringMethodRule springMethodRule = new SpringMethodRule();
@Autowired
private PersonaRepository personaJdbcRepository;
private final Persona persona;
public PersonaJdbcRepositoryTest(Persona persona){
this.persona = persona;
}
@Parameters
public static Collection<Persona[]> data() {
return Arrays.asList(new Persona[][] {
{PersonaFactory.crearPersona01()},
{PersonaFactory.crearPersona02()},
{PersonaFactory.crearPersona03()},
{PersonaFactory.crearPersona04()},
{PersonaFactory.crearPersonaMix()}
});
}
@Test
@Sql(scripts={"classpath:/com/manuel/jordan/h2/h2-elimination-script.sql"})
public void saveOneTest(){
Persona personaSaveOne = personaJdbcRepository.saveOne(persona);
Persona personaFindOne = personaJdbcRepository.findOne(personaSaveOne.getId());
assertEquals(personaFindOne, personaSaveOne);
}
@Test
public void findOneTest(){
Persona personaFindOne = personaJdbcRepository.findOne(persona.getId());
assertEquals(personaFindOne, persona);
}
@Test
public void findAllTest(){
Collection<Persona> personas = PersonaFactory.crearPersonas();
Collection<Persona> personasFindAll = personaJdbcRepository.findAll();
assertEquals(personas.size(), personasFindAll.size());
}
}
我可以data()
根據確認每個@Test
被執行,並通過N次(在本例5)。
我的要求是:我只需要執行一次findAllTest()
方法。我的意思是,它被不必要地執行了4次。甚至更多時,它不使用persona
對象。
因此可能通過SpringClassRule/SpringMethodRule
指示@Test
方法只工作一次?怎麼樣?
嗨,山姆,謝謝你的回覆。即使與Spring沒有關係,如果創建JIRA請求,是否會通過Spring添加該功能?或者沒有意義?讓我知道繼續與否。 –
不,在Spring中請求這一點是沒有意義的,因爲Spring根本不可能對它做任何事情。 –
再次感謝山姆,明白了。 –