2012-06-01 3 views
1

Я пытаюсь протестировать свое приложение gwt с помощью gwt junit, но, похоже, не в состоянии правильно настроить вещи, чтобы сделать объектизацию протестированной. Всех учебников демонстрируют тестирование DataStore, но не объективизации (что более высокий уровень базы данных службы) Мой базовый класс для тестирования выглядит следующим образом:gwt junit для тестирования objectify

public class TestBase { 
private static final LocalServiceTestHelper helper = 
    new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig()); 
protected static ObjectifyFactory fact; 

@BeforeClass 
public static void setUp() { 
    helper.setUp(); 
    fact = new ObjectifyFactory() { 
     @Override 
     public Objectify begin(ObjectifyOpts opts) 
     { 
      opts.setSessionCache(false); 
      return super.begin(opts); 
     } 
    }; 

} 

@AfterClass 
public static void tearDown() { 
    helper.tearDown(); 
} 

} 

тогда у меня есть классы, расширяющие база:

public class UserServiceTest extends TestBase{ 
private User inactiveUser; 
private UserService us; 
Objectify _ofy; 

@Rule 
public ExpectedException thrown = ExpectedException.none(); 


@Before 
public void beforeTest() { 

    //Register the classes used in the test 
    fact.register(User.class); 


    us = new UserService(); 
    inactiveUser = new User(); 

} 

@Test 
public void basicTest(){ 
    Objectify ofy = ObjectifyService.begin(); 
    ofy.put(inactiveUser); //This fails with exception: An exception occurred: com.google.apphosting.api.ApiProxy$CallNotFoundException 

      //My goal is to reach these test but "addUser" uses also objectify 
    //UserService.addUser("[email protected]", "bye"); 
    //assertNotNull(inactiveUser.get_id()); 
} 

У вас есть идея, что я делаю неправильно? Я посмотрел все через Интернет и не нашел решение (некоторые даже сказали, чтобы удалить приложение-двигатель-SDK от .classpath, но доцент, кажется, работает.

Спасибо.

+1

Как это связано с GWT? Я вижу только JUnit, AppEngine и Objectify здесь. –

+0

Привет, Томас, Мой проект - проект gwt, и я запускаю тест gwt junit. – Michael

+0

Ну, это тест JUnit 4, а не GWTTestCase, поэтому его вряд ли можно назвать «gwt junit test»; это просто простой тест JUnit, в нем нет ничего связанного с GWT; на самом деле не имеет значения, используете ли вы GWT в том же проекте или нет, насколько это касается теста. –

ответ

1

Я решил эту проблему.

Хотя com.google.apphosting.api.ApiProxy должны быть частью приложения-движка Некоторые банки все еще должен быть внутри .classpath:

$ {SDK_ROOT} /lib/testing/appengine-testing.jar

$ {SDK_ROOT}/lib/i Mpl/AppEngine-api.jar

$ {SDK_ROOT} /lib/impl/appengine-api-labs.jar

$ {SDK_ROOT} /lib/impl/appengine-api-stubs.jar // Это один я пропустил

Также я обновил свой движок приложений до версии 1.6.4.1 (возможно, это тоже помогло).

Смежные вопросы