在JUnit测试中无法创建IMarker

时间:2019-05-28 07:43:35

标签: java eclipse-plugin

我正在Eclipse中创建自己的IMarker。当然,我正在测试我的代码,这就是问题开始的地方。测试看起来像这样:

public class MarkerTest {

    private IProject project;

    @Before
    public void setUp() throws Exception {
        final IProgressMonitor progressMonitor = new NullProgressMonitor();
        final IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
        this.project = root.getProject(UUID.randomUUID().toString());
        this.project.create(progressMonitor);
        this.project.open(progressMonitor);
    }

    @Test
    public void testMarkerCreation() throws Exception {
        final IMarker marker = this.project.createMarker("org.eclipse.core.resources.problemmarker");
        marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR);
        marker.setAttribute(IMarker.MESSAGE, "Hello World.");
        marker.setAttribute("attribute", "abc");
    }
}

此代码适用于单个测试方法。它通常适用于整个测试课程。但是一次运行我所有的测试将使大约10%的测试失败:

org.eclipse.core.internal.resources.ResourceException: Marker id X not found.
    at org.eclipse.core.internal.resources.Marker.checkInfo(Marker.java:57)
    at org.eclipse.core.internal.resources.Marker.setAttribute(Marker.java:254)
    at MarkerTest.testMarkerCreation(MarkerTest.java:50)
    ... 56 more

(该异常随机指向第一个setAttribute或第二个@After public void tearDown() throws Exception { this.project.delete(true, new NullProgressMonitor()); } 。)

如果我不从Eclipse运行测试,而是执行Tycho构建,也会发生同样的情况。哪个测试失败似乎是随机的。如果重新运行测试,则其他10%失败。

Eclipse应用程序运行完美,标记创建得很好,我在那里没有看到异常(但是,另一方面,每个标记发生的可能性只有10%)。

我尝试用一​​个带有循环的测试或参数化测试之类的东西来模拟问题,但是它是不可复制的。

有两个错误,但与我的情况无关:

  • Bug 212341-在Java编辑器中“全选”后,带有警告的[标记]日志中未找到“标记ID 2”
  • Bug 214223-[标记]日志中GroupMarkerField#compare(..)的“未找到标记ID”例外
  • Bug 500292-启用保存操作时出现“ ResourceException:找不到标记ID”
  • ...

我尝试针对Eclipse 4.5和4.10进行编译,但是两者具有相同的例外。

那是什么问题?我该如何解决?

更新:添加后

---
resource_types:
- name: rss
  type: docker-image
  source:
    repository: suhlig/concourse-rss-resource
    tag: latest

resources:
- name: booklit-releases
  type: rss
  source:
    url: http://www.qwantz.com/rssfeed.php

jobs:
- name: announce
  plan:
  - get: booklit-releases
    trigger: true 

只有2%的测试失败。那根本对我没有帮助。

0 个答案:

没有答案