Разве нельзя изменить значение переменной экземпляра в тестах unt? - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть класс интеграционного теста, аннотирующий каждый метод с помощью @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 ().

...