0

我已经设置了 Geb + Spock + Groovy 并且能够成功运行一个示例脚本。现在我在另一个 groovy 类(这个类我放在资源文件夹中)中创建了一个方法,我在我的测试类中调用它,但它给了我以下错误:

无法将 FileHandling 解析为 Page 的内容或其导航器上下文的属性。FileHandling 是您忘记导入的类吗?

“FileHandling”是包含该方法的类的名称。我能够作为单独的实体成功运行此方法,但是当我在我的测试类中调用它并通过 pom.xml 运行它时,我遇到了上述错误。

请让我知道如何解决这个问题。导致问题的代码如下。

package test.groovy

import geb.spock.GebReportingSpec
import spock.lang.*
import FileHandling.*

@Stepwise
public class RateTest extends GebReportingSpec {    
    def "open application home page"() {
        when:
        go() // uses base url system property
        def path_act = "C:/Users/abc.xlsx"
        def cellArrayActual = FileHandling.returnExcelResults(path_act, "MEMBER_PREMIUM")

        then:
        title == "Welcome"
    }
}

我觉得问题不在于代码,POM.xml 依赖项有问题,请让我知道其中有什么问题。

http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>
<groupId>Automation</groupId>
<artifactId>Automation</artifactId>
<version>0.0.1-SNAPSHOT</version>


<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.9</version>
        </plugin>

        <plugin>
            <groupId>org.codehaus.gmaven</groupId>
            <artifactId>gmaven-plugin</artifactId>
            <version>1.5</version>
            <executions>
                <execution>
                    <goals>
                        <goal>testCompile</goal>
                    </goals>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>org.codehaus.gmaven.runtime</groupId>
                    <artifactId>gmaven-runtime-1.8</artifactId>
                    <version>1.4</version>
                </dependency>
                <dependency>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy-all</artifactId>
                    <version>2.1.8</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>


<dependencies>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.9</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.9</version>
    </dependency>
    <dependency>
        <groupId>org.gebish</groupId>
        <artifactId>geb-spock</artifactId>
        <version>0.9.1</version>
    </dependency>
    <dependency>
        <groupId>org.spockframework</groupId>
        <artifactId>spock-core</artifactId>
        <version>0.7-groovy-2.0</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.9</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>2.37.1</version>
    </dependency>

</dependencies>

4

2 回答 2

1

如果FileHandling是你的班级,你的进口不应该是import FileHandle而不是import FileHandle.*吗?

于 2013-11-05T17:23:54.023 回答
0
  1. 导入 FileHandling 类及其包名,如

     import test.groovy.FileHandling.* 
    
  2. 如果 FileHandling 没有扩展 GEB 的 Page 类,那么您必须实例化该类,如下所示。

     static def fileHandle = new FileHandling()
    

    并使用上面的 def fileHandle 对象调用 FileHandling 类中的方法,

      def cellArrayActual = fileHandle.returnExcelResults(path_act, "MEMBER_PREMIUM")
    
  3. 如果 FileHandling 正在扩展 GEB 的 Page 类

      class FileHandling extends Page{}
    

    那么你必须在调用方法之前使用 At checker 。

      when:
           go() // uses base url system property
           def path_act = "C:/Users/abc.xlsx"
           at FileHandling
           def cellArrayActual = FileHandling.returnExcelResults(path_act, "MEMBER_PREMIUM")
    
于 2018-06-07T11:22:51.537 回答