我正在尝试从gradle对已编译并部署到AWS Lambda的概念证明类进行简单的junit测试。类Auth.java接受具有单个属性email的POJO。它本身可以编译并可以在aws上运行。但是,当我运行时:

gradle build

我收到以下错误:
Auth.java:6: error: cannot find symbol
System.out.println(payload.email);
symbol:   variable email
location: variable payload of type Object
1 error
:compileJava FAILED

如果我从System.out.println(payload.email);中进行TestAuth.java,那么我可以访问对象的属性没有问题。我在这里无法掌握一些关键的Java或Gradle概念吗?我已经以5种不同的方式重构了这些东西,但我始终会收到此找不到符号错误的信息。有人有什么想法吗?这是我的简化代码。

./src/main/java/Auth.java
package works.valt.api;

public class Auth {

    public Auth(Object payload) {
        System.out.println(payload.email);
    }

}

./src/test/java/TestAuth.java
import org.junit.Test;
import org.junit.Before;
import static org.junit.Assert.assertEquals;
import works.valt.api.Auth;

public class TestAuth {

    public class Payload {
      public String email = "test@testing.com";
    }

    private Payload payload;

    // create payload
    @Before
    public void setUp() {
      this.payload = new Payload();
    }

   @Test
   public void testResponse() {
      Auth response = new Auth(this.payload);
   }

}

build.gradle
apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    testCompile 'junit:junit:4.12'
}

test {
    testLogging.showStandardStreams = true
}

task buildZip(type: Zip) {
    from compileJava
    from processResources
    into('lib') {
        from configurations.runtime
    }
}

build.dependsOn buildZip

最佳答案

Auth的构造方法的参数类型为Object。而且Object类没有名为email的变量。将参数类型更改为Payload

09-26 15:01
查看更多