1

我正在尝试让 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 进行一些更高级的集成测试。为此,我执行了以下操作:

  1. 将 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
    
  2. 在目录中添加一个gwt-test-utils.properties文件,src/test/resources/META-INF内容如下:

    path/to/my/module = gwt-module
    
  3. 添加了一个将 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());
        }
    }
    
  4. 添加了一个用于配置测试的 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 都知道所有相关的源文件夹和依赖项。

4

0 回答 0