У меня есть модульный тест, который пытается следовать найденным инструкциям модульного теста здесь . Я обнаружил, что любые сохраняемые мной объекты на самом деле хранятся в «реальном» хранилище данных Google Cloud Platform, связанном с моим Проектом Google.
Мое намерение состояло в том, чтобы сущности сохранялись во встроенной памяти и уничтожались после каждого теста.
При запуске теста выясняется, что он пытается записать данные в локальное хранилище данных, но все каким-то образом заканчивается записью в хранилище данных Cloud. Вот консольный вывод
com.google.appengine.api.datastore.dev.LocalDatastoreService init
ИНФОРМАЦИЯ: Инициализировано локальное хранилище данных:
Тип: Высокая Репликация
Хранение: в памяти
09 января 2019 10:44:49 com.google.appengine.api.datastore.dev.LocalDatastoreService init
ИНФОРМАЦИЯ: Инициализировано локальное хранилище данных:
Тип: Высокая Репликация
Хранение: в памяти
Вот мой юнит-тест
public class AccountGCPDatastoreDaoTest {
private final LocalServiceTestHelper helper = new LocalServiceTestHelper(
new LocalDatastoreServiceTestConfig().setApplyAllHighRepJobPolicy());
private Closeable session;
private AccountGCPDatastoreDao dao = new AccountGCPDatastoreDao();
@BeforeClass
public static void setUpBeforeClass() {
System.out.println("init Objectify");
ObjectifyService.init(new ObjectifyFactory());
ObjectifyService.register(Account.class);
}
@Before
public void setUp() { ;
helper.setUp();
session = ObjectifyService.begin();
}
@After
public void tearDown() {
session.close();
helper.tearDown();
}
@Test
public void save() {
Account account = new Account(1L, "Test Account", false, AccountType.SMALL);
dao.save(account);
Account retAcc = ofy().load().type(Account.class).id(1).now();
assertEquals(new Long(1),retAcc.getId());
assertEquals("Test Account",retAcc.getName());
assertFalse(retAcc.getPaidSubscription());
assertEquals(AccountType.SMALL,retAcc.getAccountType());
}
@Test
public void findAccountsForRegistration_NoAccountsExist() {
List<Account> accountsForRegistration = dao.findAccountsForRegistration();
assertEquals(0,accountsForRegistration.size());
}
Моя учетная запись:
@Entity
public class Account {
@Id private Long id;
private String name;
private boolean paidSubscription;
@Index private AccountType accountType;
private Account(){}
public Account(Long id,
String name,
boolean paidSubscription,
AccountType accountType){
this.id = id;
this.name = name;
this.paidSubscription = paidSubscription;
this.accountType = accountType;
}
public Long getId() {
return id;
}
public String getName() {
return name;
}
public AccountType getAccountType(){
return accountType;
}
public boolean getPaidSubscription() {
return paidSubscription;
}
}