У меня есть объект, который имеет MySQL-столбец определен как auto_incrementСброс AUTO_INCREMENT перед каждым испытанием Arquillian
@Column(columnDefinition = "integer auto_increment")
private int entityNumber;
У меня также есть Arquillian тест, в котором я проверить создание и удаление этого объекта. Класс тест помечается с помощью
@UsingDataSet("datasets/empty.xml")
В коде ниже я объясню, что происходит, и ошибка я получаю
@Test
public void createEntityTest1() {
Entity entity1 = persistEntity();
assertEquals(1, entity1.entityNumber); // works perfectly
}
@Test
public void createEntityTest2() {
Entity entity2 = persistEntity();
assertEquals(1, entity2.entityNumber);
// fails! Since I am in a new test I expect the new entityNumber to be 1
// but it is actually 2 because entity2 was previously created in
// createEntityTest1, although the entity itself doens't exist anymore
//in the DB
}
Проблема заключается в том, что после каждого теста, индекс auto_increment не сбрасывается, так что он продолжает увеличиваться для всех моих тестов, и когда я хочу его проверить, автоматически сгенерированные числа больше, чем ожидалось.
Есть ли способ сбросить это значение после каждого теста?
EDIT
SQL-схема моего стола. Это действительно легко один
CREATE TABLE `entity` (
`id` varchar(36) NOT NULL
`version` bigint(20) NOT NULL,
`entity_number` int(11) NOT NULL AUTO_INCREMENT
PRIMARY KEY (`id`),
UNIQUE KEY `UK_entity_number` (`entity_number`),
KEY `IX_entity_entity_number` (`entity_number`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Проверьте мой ответ [здесь] (http://stackoverflow.com/a/37684606) ... tldr: вы можете вклиниться в промежутки, или вы можете установить его выше. В противном случае, усечь и вернуться к 1 для следующего первого. Обратите внимание, что при удалении innodb и cascade вы можете самостоятельно деинсталлировать дочерние FK-зависимости родителя/ребенка, если это ваша проблема при чтении вашего вопроса. Очистить значения «не сиротские» дочерние строки. – Drew
Кажется, это способ сделать это, но я не хотел напрямую связываться с предложениями mysql. Мне было интересно, есть ли у вас «аркиллийский способ» ... – iberbeu
у вас даже нет схемы, чтобы узнать, что представляет собой вопрос/вызов. – Drew