我正在尝试从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