我正在尝试让 gwt-test-utils 工作。我通过以下方式设置项目:
src/main/java : all the java source code
src/test/java : the test source code
src/test/resources : resource files for the tests
我正在用 gradle 和 eclipse 构建我的项目。Gradle 默认正确使用这些目录,我将它们全部添加为 Eclipse 的源目录。
我已经成功构建并运行了该项目,并且能够执行一些普通的旧 JUnit 测试以及 . GWTTestCase
,所以我认为我正确设置了项目及其依赖项。
现在我想使用 gwt-test-utils 进行一些更高级的集成测试。为此,我执行了以下操作:
将 gwt-test-utils 和 gwt-test-utils-csv 添加到我的依赖项中
gwtTestUtilsVersion = '0.45' testCompile group:'com.googlecode.gwt-test-utils', name:'gwt-test-utils', version:gwtTestUtilsVersion testCompile group:'com.googlecode.gwt-test-utils', name:'gwt-test-utils-csv', version:gwtTestUtilsVersion
在目录中添加一个
gwt-test-utils.properties
文件,src/test/resources/META-INF
内容如下:path/to/my/module = gwt-module
添加了一个将 GwtCsvTest 扩展至
src/test/java
目录中的包的类。它模仿了 gwt-test-utils 项目 wiki中HowToWriteCsvScenario中的第二个示例,用我的替换了他们的示例类。看起来像这样@CsvDirectory(value = "gwtTests") public class LoginLogoutTest extends GwtCsvTest { @Mock private MainServiceAsync mainService; private AppController appController = new AppController(); @CsvMethod public void initApp() { appController.onModuleLoad(); } @Before public void setup() { GwtFinder.registerNodeFinder("myApp", new NodeObjectFinder() { @Override public Object find(Node node) { return csvRunner.getNodeValue(appController, node); } }); GwtFinder.registerNodeFinder("loginView", new NodeObjectFinder() { @Override public Object find(Node node) { return csvRunner.getNodeValue(appController.getRootPresenter().getCurrentlyActiveSubPresenters().iterator().next().getView(), node); } }); addGwtCreateHandler(createRemoteServiceCreateHandler()); } }
添加了一个用于配置测试的 csv 文件,
src/test/resources/gwtTests
其中包含以下内容启动 initApp assertExist;/loginView/emailTextBox
我尝试通过 Eclipse 的Run As > JUnit Test和间接通过gradle build
(它执行所有测试用例,而不仅仅是这个)来执行它。两者都导致相同的错误:
ERROR GwtTreeLogger Unable to find type 'myPackage.client.AppController'
ERROR GwtTreeLogger Hint: Check that the type name 'myPackage.client.AppController' is really what you meant
ERROR GwtTreeLogger Hint: Check that your classpath includes all required source roots
AppController 类是我在其中配置的模块中配置的入口点gwt-test-utils.properties
,这让我认为配置工作正常,其余设置(依赖项和所有)也工作正常。
在早期版本中,我使用相同的文件作为 GWTTestCase 的子类,并AppController
以相同的方式创建了一个实例。那行得通,所以我很确定类路径已正确设置以包含它。我也试过把它改回刚才的版本,它仍然有效。
我不知道为什么找不到课程。gwt-test-utils 有什么不同之处,这意味着我需要专门为其设置类路径吗?否则它应该可以正常工作,因为 gradle 和 eclipse 都知道所有相关的源文件夹和依赖项。