현재 작성한 일부 REST 전체 서비스에 대한 테스트를 작성하고 있습니다. 내가 테스트하는 서비스는 Java로 작성되어 MongoDb/Morphia를 사용합니다. 테스트는 서비스를 호출하고 일부는 테스트 콜렉션에 기록합니다. 검사를 끝내고 주사 한 데이터를 삭제해야합니다. 이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 여기 Arquillian 테스트 중 데이터베이스 살생
내 간단한 서비스 중 하나의 예입니다package org.haib.myerslab.services;
@Path("/database")
public class DatabaseService {
@Inject
private Datastore ds;
@Path("/genre/")
@POST
@Produces("application/json")
public GenreDTO postFromGenreDTO(@Context UriInfo uri, GenreDTO form) throws ParseException {
Genre myNewGenre = DtoToDomainMapper.gerneFromGenreDTO(form);
myNewGenre.setId(form.getId());
ds.save(myNewGenre);
return new GenreDTO(myNewGenre);
}
}
을 그리고 여기 내 Arquillian 테스트의 예입니다
다음 getDeployment 기능은 다음과 같습니다 어디@RunWith(Arquillian.class)
public class GeneTest {
private static String myId = "myGenreId";
private static String myGenre = "myGenre";
private static String myGenreInfo = "myGenreInfo";
@Deployment
public static WebArchive getDeployment() {
return TestHelper.getDeployment();
}
@Test
@RunAsClient
@InSequence(1)
public void canPostGenre(@ArquillianResource URL baseURL) throws Exception {
GenreDTO newGenre = new GenreDTO();
newGenre.setGenre(myGenre);
newGenre.setGenreInfo(myGenreInfo);
newGenre.setId(myId);
String url = baseURL.toURI().resolve("/database/genre/").toString();
JsonNode rootNode = TestHelper.postUrl(url, newGene);
assertEquals(myGenre, rootNode.get("genre").asText());
assertEquals(myGenreInfo, rootNode.get("genreInfo").asText());
assertEquals(myId, rootNode.get("id").asText());
}
}
public static WebArchive getDeployment() {
File[] depend = Maven.resolver().loadPomFromFile("pom.xml").importRuntimeDependencies().resolve().withTransitivity().asFile();
WebArchive war = ShrinkWrap.create(WebArchive.class).addClass(TestHelper.class)
.addClass(Genre.class).addClass(Application.class).addPackage("org/haib/myerslab")
.addPackage("org/haib/myerslab/database").addPackage("org/haib/myerslab/genre")
.addPackage("org/haib/myerslab/dto").addPackage("org/haib/myerslab/dto/genre")
.addAsLibraries(depend).addAsWebInfResource("jboss-deployment-structure.xml")
.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml").setWebXML("test-web.xml");
return war;
}
내가 잃어버린 곳에서, @After에서 데이터베이스를 삽입하는 가장 좋은 방법은 무엇입니까, 우리의 장르 클라스를 정리하면, 다음 장의 테스트에는 거기에 없다. 어떻게해야합니까? 다른 방법이 있습니까?
+1 좋은 점은 누군가가 통합 테스트를위한 우수 사례를 찾고 있다는 것입니다. –