在unt测试中是否可以修改实例变量的值?

时间:2018-09-13 13:52:16

标签: testing junit

我有一个集成测试类,用@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);
    }
}

我不明白为什么在运行insertMyEntity()之后,在deleteMyEntity()中不可用这些更改。

0 个答案:

没有答案