在客户端测试中侦察Eclipse ScoutServerTestRunner

时间:2015-03-10 07:25:32

标签: junit client-server server eclipse-scout

现在我在侦察测试中遇到了新问题。

我有用于测试的客户端片段项目,我想测试一些我创建的模板。

我的问题是这个模板包含一些SmartFields,我想测试它们。为此,我可能需要ScoutServerTestRunner,因此服务器已启动并运行。

但如果我尝试添加它,我会收到错误:

@RunWith(ScoutServerTestRunner.class)
@ServerTest()

我收到错误:

ServerTest cannot be resolved to a type

,我的所有assert个导入都会被删除,我的package行会收到错误,提示我Configure build path

我的猜测是,这是无法完成的,因为它是客户端片段,无法连接到服务器。 但是如何测试smartFields呢?

1 个答案:

答案 0 :(得分:2)

从你的问题我想有一些误解......


ScoutServerTestRunner@ServerTest类似于ClientServerTestRunner@ClientTest,但对于服务器而言。您将需要它来测试服务器的测试。

这些课程位于org.eclipse.scout.rt.testing.server捆绑包中。


如果在客户端测试中需要服务器,则有两种可能:

A /启动服务器

您可以启动服务器

Scout tests with a server

这可能不是普通服务器(生产中的服务器),因为您想要控制数据库或某些外部服务。身份验证也可能略有不同(为了控制它并与测试兼容)

对于maven构建中的集成,maven-cargo插件可用于在执行客户端测试套件之前启动服务器。

B / Mock服务器服务

每个创建调用服务器的ProxyService的服务调用都可以替换为mock(仅限客户端)。

Scout tests with mocked server services]

这是单元测试的首选方法,因为您不依赖于已部署的服务器。您还可以为每个测试定义服​​务器答案。 这个解决方案可能最初需要更多的工作,但在我看来这是值得的。

要注册替代服务,您可以使用:

TestingUtility.registerServices(
     <activator instance>, 
     <priority>, 
     <service instances>
);

优先级较高的服务将获胜。

在每项测试中,不要忘记取消注册您已注册的替代服务。


SmartField正在使用CodeTypes或LookupCalls。如果是LookupCallLookupCall可能正在通过LookupService调用服务器。如果是CodeType,则SmartField会在内部使用依赖于CodeLookupCall的{​​{1}}类。

在这两种情况下,如果要在没有服务器的情况下运行测试,则需要确保客户端使用需要服务器的所需服务的替代实现。