我正在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%)。
我尝试用一个带有循环的测试或参数化测试之类的东西来模拟问题,但是它是不可复制的。
有两个错误,但与我的情况无关:
我尝试针对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%的测试失败。那根本对我没有帮助。