当前位置: 首页 > 知识库问答 >
问题:

GAE:从Junit测试创建实体对象

史昊焱
2023-03-14

我的一个GAE类正在从HTML文件创建[datastore Entity][1]:

Key parent = KeyFactory.createKey("movies", "movies");
Entity movie = new Entity("movie",System.currentTimeMillis(), parent);
setIfNotEmpty(movie, "director",    Jsoup.parse(Html).select("td#f3").text());
setIfNotEmpty(movie, "year",        Jsoup.parse(Html).select("td#f17").text());
....

当我试图在JUnit测试中调用此方法时,会引发以下异常:

java.lang.NullPointerException: No API environment is registered for this thread.
    at com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppId(DatastoreApiHelper.java:80)
    at com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppIdNamespace(DatastoreApiHelper.java:90)
    at com.google.appengine.api.datastore.Key.<init>(Key.java:97)
    at com.google.appengine.api.datastore.Key.<init>(Key.java:87)
    at com.google.appengine.api.datastore.KeyFactory.createKey(KeyFactory.java:85)
    at com.google.appengine.api.datastore.KeyFactory.createKey(KeyFactory.java:78)
    at com.google.appengine.api.datastore.KeyFactory.createKey(KeyFactory.java:66)
    at cinemasderot.Movie.parseMovieHtml(Movie.java:21)
    at tests.TestParsing.testAddition(TestParsing.java:24)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
    .....

问题似乎是在我的代码示例的第一行中创建键。

共有1个答案

海翼
2023-03-14

简而言之,你需要这样的东西:

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

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

@After
public void tearDown() {
    helper.tearDown();
}
 类似资料:
  • 我正在创建两个单元测试来测试我的应用程序逻辑。在下面,我根据顺序是否为真创建了两个最终变量。有没有一种方法可以不必为每种订单类型创建最终变量,从而使其干燥?

  • 昨天,我编写并运行了一个Katalon测试套件,今天,我试图将Katalon与Jenkins集成。我成功地安装了Jenkins,根据这些说明为Katalon测试创建了一个新的工作,但是当我开始构建它时,我得到了失败的构建。 特别是,这是我不断收到的错误消息: 我继续将文件夹结构从我指定的项目目录复制到Jenkins工作区。经过后来的检查,我发现,当Jenkins运行Katalon测试时,文件实际上

  • 考虑一个maven实用工具模块(模块1),它定义了一个抽象类:AbstractFoo.java。在测试资源下,编写了所述类的模型:foomockup.java。还编写了一个测试类:AbstractFootest.java。 现在考虑第二个模块(模块2),它包含一个使用AbstractFoo的类,并声明测试用例:bar.java和bartest.java。java在创建Bar实例的同时创建FooMo

  • 主要内容:Visual Website Optimizer(VWO),Google内容实验(Google Content Experiments),Optimizely由于A/B测试是关于创建应用程序或网页的新版本,然后比较所有版本以查看转换率。可以通过分析统计数据来检查新变化,从而提高转化率。 有不同类型的变化可以应用于对象,如使用项目符号,更改关键元素的编号,更改字体和颜色等。市场上有许多A/B测试工具,它们具有可视化编辑器。 成功执行A/B测试的关键决定是选择正确的工具。 一些最常用的工具

  • 问题内容: 情况 :我有使用@Service注释的服务实现类,可以访问属性文件。 属性对象是通过config-file配置的。 applicationContext.xml 我想测试此实现的一些方法。 问题 :如何通过测试类访问MySystemServiceImpl-object,从而正确初始化Properties appProperties? 我不能简单地创建新的MySystemServiceI