Eclipse Scout Neon对execChangedMasterValue的单元测试

时间:2016-05-25 06:58:02

标签: eclipse-scout

我有两个与主从关系相关的字段:

public class Slave extends AbstractListBox<String> {

  @Override
  protected Class<? extends IValueField> getConfiguredMasterField() {

    return Master.class;
  }

  @Override
  protected void execChangedMasterValue(final Object newMasterValue) {
    this.function() // -> here I put debugging break point
  }
}

public class Master extends AbstractBooleanField {

  @Override
  protected void execChangedValue() {

    super.execChangedValue(); // -> Break point 2 
  }
}

我为这种关系编写了单元测试,但是从不调用单元测试execChangedMasterValue

我的单元测试如下:

@Test
public void test() {

    this.box.getMaster.setValue(true)
    Assert.assertFalse(... something from function Slave ...)
}

单元测试总是失败,如果我按上述方法设置断点,调试器仅在第二个断点处停止,但从不在第一个断点处停止。

真实&#34;世界,函数被调用,一切都按预期工作。

是否有理由不调用execChangedMasterValueexecChangedMasterValue的行为是否与changedValue()不同?

1 个答案:

答案 0 :(得分:1)

我无法重现你所描述的内容。我参加了Scout HelloWorld项目(创建新项目时生成的项目)。

HelloWorldForm我已在MainBox中添加了此“奴隶”字段:

@Order(2000)
public class LengthField extends AbstractIntegerField {
    @Override
    protected String getConfiguredLabel() {
        return TEXTS.get("Length");
    }

    @Override
    protected Class<? extends IValueField<?>> getConfiguredMasterField() {
        return MessageField.class;
    }

    @Override
    protected void execChangedMasterValue(Object newMasterValue) {
        if(newMasterValue instanceof String) {
            String s = (String) newMasterValue;
            setValue(s.length());
        } else {
            setValue(0);
        }
    }
}

在示例单元测试HelloWorldFormTest中,我添加了一个额外的检查testMessageCorrectlyImported()

/**
 * Tests that the {@link MessageField} is correctly filled after start.
 */
@Test
public void testMessageCorrectlyImported() {
    HelloWorldForm frm = new HelloWorldForm();
    frm.start();

    Assert.assertEquals("Message field", MESSAGE_VALUE, frm.getMessageField().getValue());
    Assert.assertEquals("Length field", Integer.valueOf(MESSAGE_VALUE.length()) , frm.getLengthField().getValue());

    frm.getMessageField().setValue("abcdef");
    Assert.assertEquals("Length field (after update)", Integer.valueOf("abcdef".length()), frm.getLengthField().getValue());
}

一切都按预期工作......

相关问题