簡體   English   中英

使用Junit + eclipse在本地存儲Google App引擎中持久存儲數據

[英]Persist data in local storage google app engine with Junit + eclipse

我的設置:

win 7,eclipse,GAE sdk 1.8.5,objectify 4,junit4

我正在嘗試編寫Junit測試用例,以保存兩個Car實體並檢索它們。 我為此使用了對象化,並且效果很好。

我的問題是我需要在多次測試用例中保留這些實體,這意味着一旦我在一次運行中使用doSaveCar()保存,在下一次運行中,我應該在運行doListCar()時取回這兩個實體。 。 如何在Eclipse環境中的各種junit測試運行中保持本地存儲

import org.junit.After;
import org.junit.Before;
import org.junit.Test;


import com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig;
import com.google.appengine.tools.development.testing.LocalMemcacheServiceTestConfig;
import com.google.appengine.tools.development.testing.LocalServiceTestHelper;

public class OFYTest  {

    private final LocalServiceTestHelper helper = new LocalServiceTestHelper(
            new LocalDatastoreServiceTestConfig(),
            new LocalMemcacheServiceTestConfig());

        @Before
        public void setUp() {
            helper.setUp();

        }
        @After
        public void tearDown() {
            helper.tearDown();
        }

        @Test
        public void doSaveCar() {

            new CRUDServiceImpl().save(new Car("Mustang", "green"));
            new CRUDServiceImpl().save(new Car("SRT", "red"));

        }


        @Test
        public void doListCars(){

            new CRUDServiceImpl().list(AbstractEntity.class);


        }

}

我通過設置NoStorage標志,使用objectify,junit,mockito和google-app-engine將數據從一次運行轉移到另一次運行。

dsService.setNoStorage(false);

參考下面的junit測試

private final LocalServiceTestHelper helper =
          new LocalServiceTestHelper(new LocalUserServiceTestConfig())
              .setEnvIsLoggedIn(true)
              .setEnvAuthDomain("localhost")
              .setEnvEmail("test@localhost");

  @Before
  public void setupCustomerServlet() {
    helper.setUp();
    LocalDatastoreService dsService = (LocalDatastoreService)helper.getLocalService(LocalDatastoreService.PACKAGE);
    dsService.setNoStorage(false);
    customerServlet = new CustomerServlet();
  }

  @After
  public void tearDownHelper() {
    helper.tearDown();
  }

  @Test
  public void testDoGet() throws IOException, ServletException {
    HttpServletRequest request = mock(HttpServletRequest.class);
    HttpServletResponse response = mock(HttpServletResponse.class);

    // A test entry
    Customer customerIn = new Customer();
    customerIn.setName("Felix");
    customerIn.setAddress("Kuestahler");
    String json = (new Gson()).toJson(customerIn);

    StringWriter stringWriter = new StringWriter();

    when(request.getReader()).thenReturn(new BufferedReader(new StringReader(json)));
    when(response.getWriter()).thenReturn(new PrintWriter(stringWriter));

    customerServlet.doPost(request, response);

    Customer customerOut =  (new Gson()).fromJson(stringWriter.toString(), Customer.class);

    assertEquals(customerOut.getName(), customerIn.getName());
    assertEquals(customerOut.get_id() > 0,true);

    stringWriter = new StringWriter();

    when(request.getReader()).thenReturn(new BufferedReader(new StringReader("")));
    when(response.getWriter()).thenReturn(new PrintWriter(stringWriter));

    customerServlet.doGet(request, response);

    System.out.println("Out: "+stringWriter.toString());

  }

每次mvn測試運行后,我在本地存儲的客戶列表都在增長。

imac:~ Felix$ ls -l /Users/Felix/Development/workspace-clb/clb-appEngine/./WEB-  INF/appengine-generated/
total 32
-rw-r--r--  1 Felix  Felix     81 22 Okt 22:00 datastore-indexes-auto.xml
-rw-r--r--  1 Felix  Felix  10068 22 Okt 22:00 local_db.bin
imac:~ Felix$ ls -l /Users/Felix/Development/workspace-clb/clb-appEngine/./WEB-INF/appengine-generated/
total 32
-rw-r--r--  1 Felix  Felix     81 22 Okt 22:08 datastore-indexes-auto.xml
-rw-r--r--  1 Felix  Felix  11265 22 Okt 22:08 local_db.bin`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM