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

AssertionFailedException:断言失败:在TreeViewer中

屈健柏
2023-03-14

我正在努力学习树视图。但是,在运行代码时,我在执行一行时得到了一个错误-

treeViewer.setContentProvider(new AddressContentProvider());
public class ViewPart1 extends ViewPart {

public static final String ID = "HelloWorld.view1";
TreeViewer treeViewer;

public ViewPart1() {
    // TODO Auto-generated constructor stub
}

@Override
public void createPartControl(Composite parent) {
    Tree addressTree = new Tree(parent, SWT.BORDER | SWT.H_SCROLL
            | SWT.V_SCROLL);
    addressTree.setHeaderVisible(true);

    TreeColumn column1 = new TreeColumn(addressTree, SWT.LEFT);
    addressTree.setLinesVisible(true);
    column1.setAlignment(SWT.LEFT);
    column1.setText("Land/Stadt");
    column1.setWidth(160);
    TreeColumn column2 = new TreeColumn(addressTree, SWT.RIGHT);
    column2.setAlignment(SWT.LEFT);
    column2.setText("Person");
    column2.setWidth(100);
    TreeColumn column3 = new TreeColumn(addressTree, SWT.RIGHT);
    column3.setAlignment(SWT.LEFT);
    column3.setText("m/w");
    column3.setWidth(35);

    treeViewer = new TreeViewer(addressTree);
    treeViewer.setContentProvider(new AddressContentProvider());
    treeViewer.setLabelProvider(new TableLabelProvider());
    List<City> cities = new ArrayList<City>();
    cities.add(new City());
    treeViewer.setInput(cities);
    treeViewer.expandAll();

}

@Override
public void setFocus() {
    // TODO Auto-generated method stub

}
}

My AddressContentProvider Class looks like this -

    public class AddressContentProvider implements IContentProvider {
    public Object[] getChildren(Object parentElement) {
        if (parentElement instanceof List)
            return ((List<?>) parentElement).toArray();
        if (parentElement instanceof City)
            return ((City) parentElement).getStreets();
        if (parentElement instanceof Street)
            return ((Street) parentElement).getHouses();
        return new Object[0];
    }

    public Object getParent(Object element) {
        if (element instanceof Street)
            return ((Street) element).city;
        if (element instanceof House)
            return ((House) element).street;
        return null;
    }

    public boolean hasChildren(Object element) {
        if (element instanceof List)
            return ((List<?>) element).size() > 0;
        if (element instanceof City)
            return ((City) element).getStreets().length > 0;
        if (element instanceof Street)
            return ((Street) element).getHouses().length > 0;
        return false;
    }

    public Object[] getElements(Object cities) {
        return getChildren(cities);
    }

    public void dispose() {
    }

    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
    }
    }
    !ENTRY org.eclipse.e4.ui.workbench 4 0 2015-08-27 10:10:25.121
!MESSAGE 
!STACK 0
org.eclipse.core.runtime.AssertionFailedException: assertion failed: 
    at org.eclipse.core.runtime.Assert.isTrue(Assert.java:110)
    at org.eclipse.core.runtime.Assert.isTrue(Assert.java:96)
    at org.eclipse.jface.viewers.AbstractTreeViewer.assertContentProviderType(AbstractTreeViewer.java:2385)
    at org.eclipse.jface.viewers.TreeViewer.assertContentProviderType(TreeViewer.java:345)...

可能的原因是什么?

编辑:当我在view类中编写AddressContentProvider类时,它工作得非常好。但是,我在其他文件中编写这个类,它不起作用:(

共有1个答案

凤高澹
2023-03-14

树的内容提供程序必须实现itreecontentProvidericontentProvider是不够的。

尽管已经实现了树内容提供程序的方法,但实际上必须声明该类实现了ITreecontentProvider

 类似资料:
  • 我是JMeter和断言概念的新手。当我试图执行一个JMX文件(包含JMeter中的断言)时,遇到了以下错误消息: 断言错误:错误断言失败:真断言失败消息:测试失败:变量(搜索结果)不相等/接收:找不到[[[]]]]比较:找不到[[[]]]]] 脚本的执行方式如下:$java-jar./apache-jmeter-2.10/bin/apachejmeter.jar-t./jmeter-master/

  • 我在flutter上使用firebase做了一个简单的婴儿名字项目,在成功完成教程后,该应用程序出现了这样的错误:“package:firebase_demo/main.dart':Failed assertion:line 86 pos 16:'map['votes]!=null':is not true。” 同样的帮助。

  • 问题内容: 我正在学习Xcode中的视图调试器,并通过 Debug > View Debugging> Capture View Hierarchy捕获视图层次结构 。但是,当我在应用程序中尝试该操作时,出现以下错误: -[UITextView _firstBaselineOffsetFromTop],/ BuildRoot / Library / Caches / com.apple.xbs /

  • 我正在使用JUnit自动化功能测试。我遇到了一个问题:如果我遵循规则“每个测试方法一个(重要的)断言”,那么每个测试用例最终会有一堆6行测试方法(17个是迄今为止最大的数字)。如果我将它们全部放入一个测试方法中,我必须注释掉失败的断言,否则一半的测试永远不会启动。 我不喜欢第一种方式,因为它启动浏览器的次数太多,而且浏览器启动登录/注销似乎比测试运行本身更“昂贵”和耗时。 第二种方法也不好,因为它

  • 我在单元测试中使用groovy脚本。我有以下代码片段,我在单个测试脚本中使用多个断言。 第一个断言失败并停止执行。但我想继续进一步的代码片段。 与selenium中的软断言类似,我应该如何收集groovy中的所有失败异常。

  • 问题内容: 我有一个Jenkins作业,它通过Nightwatch.js框架在Browserstack上运行Selenium测试。我们有一套完整的测试程序,可以让守夜人在不同的进程中运行,并且我们需要一种在所有测试运行后将通过/失败值返回给Jenkins的方法。 我一直在尝试使用Nightwatch挂钩在每个模块的末尾运行一段代码,但是我无法弄清楚需要采取什么措施才能使Jenkins作业可以访问该