Geb,Spock,Groovy - 从Test类中的其他groovy类执行方法时出现的问题

时间:2013-11-05 13:07:24

标签: groovy spock geb

我已经设置了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>

2 个答案:

答案 0 :(得分:1)

如果FileHandling是您的班级,那么您的导入不应该是import FileHandle而不是import FileHandle.*吗?

答案 1 :(得分: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")