Java 使用Intellij在调用私有/受保护方法的不同包中编写单元测试
我意识到这个问题以前在这里被问过-> 然而,答案对我不起作用,我不明白为什么 Intellij版本:Java 使用Intellij在调用私有/受保护方法的不同包中编写单元测试,java,intellij-idea,Java,Intellij Idea,我意识到这个问题以前在这里被问过-> 然而,答案对我不起作用,我不明白为什么 Intellij版本: IntelliJ IDEA 2016.1.4 Build #IC-145.2070, built on August 2, 2016 JRE: 1.8.0_77-b03 x86 JVM: Java HotSpot(TM) Server VM by Oracle Corporation MyApp.java MyAppTest.java 包/目录树: IntelliJ IDEA 2016.1.4
IntelliJ IDEA 2016.1.4
Build #IC-145.2070, built on August 2, 2016
JRE: 1.8.0_77-b03 x86
JVM: Java HotSpot(TM) Server VM by Oracle Corporation
MyApp.java
MyAppTest.java
包/目录树:
IntelliJ IDEA 2016.1.4
Build #IC-145.2070, built on August 2, 2016
JRE: 1.8.0_77-b03 x86
JVM: Java HotSpot(TM) Server VM by Oracle Corporation
问题:
IntelliJ IDEA 2016.1.4
Build #IC-145.2070, built on August 2, 2016
JRE: 1.8.0_77-b03 x86
JVM: Java HotSpot(TM) Server VM by Oracle Corporation
我尝试过的:
IntelliJ IDEA 2016.1.4
Build #IC-145.2070, built on August 2, 2016
JRE: 1.8.0_77-b03 x86
JVM: Java HotSpot(TM) Server VM by Oracle Corporation
有人知道如何让它工作吗?您的源目录和包是错误的
src/main/java
,为测试代码选择了src/test/java
。您应该在IntelliJ中将这两个目录声明为源文件夹(项目结构->模块->选择文件夹并单击src/main/java
和src/test/java
的源代码)com.simpleproject
。问题是您声明了两个不同的包(main.java.com.simpleproject
和test.java.com.simpleproject
),这就是为什么您不能调用受保护的方法package com.simpleproject;
import static org.assertj.core.api.Assertions.assertThat;
public class Test {
@Test
public void shouldTestMyClass() {
// Given
int givenNum = 3;
// When
MyApp myApp = new MyApp(givenNum);
myApp.updateNumPlusTwo();
// Then (use AssertJ library for example)
assertThat(myApp.getUpdatedNum()).isEqualTo(5);
}
}
下面是我在尝试此操作时看到的所有问题->更改
package main.java.com.simpleproject后的问题代码>到包com.simpleproject代码>在“MyApp.java”->中,我还想添加使用eclipse->ok获得这些不同目录的人。删除updateNumPlusTwo方法的“private”修饰符。您需要导入JUnit:Project Structure->libraries如果您不想使用JUnit,可以尝试使用main方法,无需导入任何内容。