1

我正在尝试使用侦察上下文创建单元测试,但找不到合适的教程或示例。

当我创建测试时ScoutClientTestRunner,我得到错误

java.lang.Exception: Client session class is not set. Either set the default client session using 'ScoutClientTestRunner.setDefaultClientSessionClass' or annotate your test class and/or method with 'ClientTest'

我尝试像这样设置客户端会话类:

@Before
public void setClassSession() throws Exception {

  ScoutClientTestRunner.setDefaultClientSessionClass(ClientSession.class)         
}

@BeforeClass
public void setClassSession() throws Exception {

  ScoutClientTestRunner.setDefaultClientSessionClass(ClientSession.class);
}

我尝试添加@ClientTest到类和所有方法中,但我仍然得到同样的错误。

如果您使用,如何在测试中设置客户端会话ScoutClientTestRunner

4

1 回答 1

1

ScoutClientTestRunner 确保在所有 Scout 上下文(OSGi 等)可用的情况下执行 JUnit 测试。你的尝试@Before@BeforeClass为时已晚。您需要在此之前提供 Scout Context 初始化参数。正如异常消息所说,您有两种可能性:

(1)@ClientTest注解

@ClientTest您可以使用参数注释测试类或方法clientSessionClass

@RunWith(ScoutClientTestRunner.class)
@ClientTest(clientSessionClass = ClientSession.class)
public class DesktopFormTest {

  @Test
  public void test1() throws Exception {
    //Do something requiring a scout context:
    //for example instantiate a DesktopForm.
  }
}

如有必要,您也可以在方法级别执行此操作:

@RunWith(ScoutClientTestRunner.class)
public class DesktopFormTest {

  @Test
  @ClientTest(clientSessionClass = Client1Session.class)
  public void test1() throws Exception {
    //client session is an instance of Client1Session.
  }

  @Test
  @ClientTest(clientSessionClass = Client2Session.class)
  public void test2() throws Exception {
    //client session is an instance of Client2Session.
  }
}

(2) 定义一个TestEnvironment

运行测试时(直接或使用 maven-tycho),将完成对完全限定类的查找org.eclipse.scout.testing.client.runner.CustomClientTestEnvironment

从 IDE 运行测试

该类CustomClientTestEnvironment应该实现org.eclipse.scout.testing.client.runner.IClientTestEnvironment

该方法setupGlobalEnvironment()被调用一次,可用于定义默认客户端会话ScoutClientTestRunner.setDefaultClientSessionClass(..)。此方法也可用于注册所需的服务。

这里有一个例子:

package org.eclipse.scout.testing.client.runner; // <= can not be changed.

// add imports

public class CustomClientTestEnvironment implements IClientTestEnvironment {

  @Override
  public void setupGlobalEnvironment() {
    //Set client session:
    ScoutClientTestRunner.setDefaultClientSessionClass(ClientSession.class);
  }

  @Override
  public void setupInstanceEnvironment() {
  }
}

当然(1)和(2)是兼容的。第二种机制仅定义默认值,使用 (1) 配置的 ClientSession 将覆盖默认值。

于 2015-03-09T18:30:01.633 回答