У меня есть класс интеграционного теста, аннотирующий каждый метод с помощью @Test
.
В этом классе у меня есть переменная экземпляра, предназначенная для использования для всех методов.
Когда я изменяю значение этой переменной, оно недоступно в следующем тестовом примере / методе. Не имеет значения, является ли эта переменная объектом или примитивом. Почему нет?
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = { DatasourceConfiguration.class})
@TestPropertySource(value = {"classpath:testapplication.properties"})
@WebAppConfiguration
@ActiveProfiles({"dev" })
public class MyRepositoryIT {
private static final Logger LOG = LoggerFactory.getLogger(MyRepositoryIT.class);
@Autowired
private MyRepository repository;
@Autowired
private JdbcTemplate jdbcTemplate;
private static final String event = "{" +
"\"metadata\": {" +
"\"eid\": \"9a937925-4f5b-49e4-ad9f-4a94d579c60f\", " +
"\"flowId\": \"njc-1534932467059-07822902a9c91a80\", " +
"\"version\": \"1.0.0\", " +
"\"eventType\": \"aType\", " +
"\"partition\": \"0\", " +
"\"occurredAt\": \"20180822Z\", " +
"\"receivedAt\": \"20180910Z\"" +
"}" +
"}";
private static final String cursor = "{" +
"\"shift\": null, " +
"\"offset\": \"001-0001-000000000000000176\", " +
"\"eventType\": \"aType\", " +
"\"partition\": \"0\", " +
"\"cursorToken\": \"8e2470a7-8f20-40ec-b13e-ca5b9b989528\"" +
"}";
private MyEntity teee = new MyEntity(null, null, EnumType.ABC, event, cursor, null, null);
private static int x = 1;
@Test
// @Transactional
public void insertMyEntity() {
final Long id = repository.insertMyEntity(teee);
final MyEntity eventResult = repository.getMyEvent(id);
assertNotNull("Query returned null object", eventResult);
teee = null;
teee = new MyEntity(eventResult.getId(), Integer.valueOf(222), EnumType.ABCDE,
eventResult.getEvent(), eventResult.getCursor(), eventResult.getCreated(), eventResult.getLastModified());
LOG.info("___________________________________________");
LOG.info("{}", teee);
LOG.info("___________________________________________");
MyRepositoryIT.x++;
LOG.info("x hat nun den Wert {}.", x);
}
@Test
// @Transactional
public void deleteMyEntity() {
final long before = repository.count();
LOG.info("x = {}", x);
LOG.info("{} events found in DB before deletion.", before);
LOG.info("Deleting TEEE {}.", teee.toString());
LOG.info("Deleting TEEE with ID {}.", teee.getId());
repository.deleteMyEntity(teee);
LOG.info("{} events found in DB after deletion.", repository.count());
assertTrue("Deletion of event failed.", before == repository.count()+1);
}
}
Я не понимаю, почему изменения не доступны в deleteMyEntity () после запуска insertMyEntity ().