Я написал кучу сущностей. Я пытаюсь проверить их сейчас. У меня были проблемы с сущностью, очень похожей на эту, но внезапно проблема ушла, когда я очистил сборку. Затем я начал писать аналогичный тест для SetMap, а затем ..... та же проблема. Я на 99,9999% уверен, что только 100 баллов SetMaps. тем не менее, мой тест говорит, что 101 с запросом в коде ниже.
Я чувствую, что эти тесты - отстой. Может кто-нибудь дать мне несколько советов по юнит-тестированию классов сущностей? что именно я должен проверять? просто существует после того, как я их настаиваю?
почему, почему, почему в моем методе тестирования ниже показано 101 SetMaps. Как ... почему ... = - [
Я получаю эту ошибку каждый раз, когда я компилирую:
89 Персистентный тест WARN [main] openjpa.Runtime - Блок персистентности "Персистентный тест" был найден несколько раз в следующих ресурсах "[file: / home / matt / Code / vox / vox-lib / vox- lib-common / vox-entity / target / classes / META-INF / persistence.xml, файл: / home / matt / код / vox / vox-lib-common / vox-entity / src / main / resources /META-INF/persistence.xml] ", но имена единиц хранения должны быть уникальными. Используется первый блок персистентности, соответствующий указанному имени в «file: /home/matt/Code/vox/vox-lib/vox-lib-common/vox-entity/target/classes/META-INF/persistence.xml». ,
202 персистентный тест INFO [main] openjpa.Runtime - запуск OpenJPA 2.1.1
448 тест на постоянство INFO [main] openjpa.jdbc.JDBC - Использование словарного класса "org.apache.openjpa.jdbc.sql.DerbyDictionary".
в моей папке src / main / resources / META-INF определенно есть только один файл persistence.xml.
Я использую Maven. Возможно ли, что Maven что-то копирует?
public class SetMapTest {
private static EntityManagerFactory emf;
private static EntityManager em;
private static EntityTransaction tx;
@BeforeClass
public static void initEntityManager() throws Exception {
emf = Persistence.createEntityManagerFactory("persistence-test");
em = emf.createEntityManager();
}
@AfterClass
public static void closeEntityManager() throws SQLException {
em.close();
emf.close();
}
@Before
public void initTransaction() {
tx = em.getTransaction();
}
@Test
public void testSomeMethod() {
// check that nothing is there
String s = "SELECT x FROM SetMap x";
Query q = em.createQuery(s);
List<SetMap> qr = q.getResultList();
assertEquals(0, qr.size());
int count = 100;
// util method that returns setMaps where setMap.title = 'title:i'
// where 0 <= i < count
ArrayList<SetMap> setMaps = TestUtil.getNumberedSetMapList(count);
assertEquals(setMaps.size(), count);
VoxUser author = TestUtil.getNumberedVoxUser(0);
SetPatternMap setPatternMap = TestUtil.getNumberedSetPatternMap(0);
setPatternMap.setAuthor(author);
author.addSetPatternMap(setPatternMap);
tx.begin();
em.persist(author);
em.persist(setPatternMap);
Iterator<SetMap> iter = setMaps.iterator();
while(iter.hasNext()){
SetMap setMap = iter.next();
em.persist(setMap);
setMap.setAuthor(author);
author.addSetMap(setMap);
setMap.setSetPatternMap(setPatternMap);
setPatternMap.addSetMap(setMap);
}
tx.commit();
String qString = "SELECT x FROM SetMap x";
q = em.createQuery(qString);
qr = q.getResultList();
assertEquals(count, qr.size()); // this is the method that fails
// it claims there are 101 SetMaps in the P.C.
for (int i = 0; i < 1; i++) {
String qt = "SELECT x FROM SetMap x WHERE x.title = 'title:" + i + "'";
q = em.createQuery(qt);
qr = q.getResultList();
assertEquals(1, qr.size());
// i played around with this a little bit. It seems there are two SetMaps
// whose titles are "title:0" I can't figure out how that is....
}
}
}
некоторые из моих утилитарных методов:
public static PhraseMap getNumberedPhraseMap(int pos){
PhraseMap phraseMap = new PhraseMap();
phraseMap.setTitle("title:" + pos);
return phraseMap;
}
public static ArrayList<PhraseMap> getNumberedPhraseMapList(int count){
ArrayList<PhraseMap> phraseMaps = new ArrayList<PhraseMap>();
for(int i = 0; i < count; i++){
PhraseMap phraseMap = getNumberedPhraseMap(i);
phraseMaps.add(phraseMap);
}
return phraseMaps;
}
помогите пожалуйста!