无法访问junit测试类中的包私有方法

Posted

技术标签:

【中文标题】无法访问junit测试类中的包私有方法【英文标题】:Not able to acess package private methods in junit test class 【发布时间】:2014-06-05 03:24:31 【问题描述】:

所以现在我的项目中有以下标准包名称设置:

src/main/java/model/SampleClass.java 你可以查看@https://github.com/quinnliu/WalnutiQ/blob/master/src/main/java/model/SampleClass.java

src/test/java/model/SampleClassTest.java 你可以查看@https://github.com/quinnliu/WalnutiQ/blob/master/src/test/java/model/SampleClassTest.java

SampleClass.java 如下所示:

package main.java.model;

public class SampleClass 
    int packagePrivateMethod() 
    return -1;
    

SampleClassTest.java 看起来像这样:

package test.java.model;

import main.java.model.SampleClass;

public class SampleClassTest extends junit.framework.TestCase 
    private SampleClass sampleClass;

    public void setUp() 
    this.sampleClass = new SampleClass();
    

    public void test_packagePrivateMethod() 
    // this method can't be called right now why?
    //this.sampleClass.packagePrivateMethod();
    

为什么不能调用方法packagePrivateMethod()???

【问题讨论】:

它不是私人的。它具有默认访问权限。 你知道package private(默认)访问意味着只有同一个包中的其他类可以访问它吗? 【参考方案1】:

无法调用,因为这两个类不在同一个包中。一个在main.java.model,另一个在test.java.model

【讨论】:

但是这里的最佳答案呢:***.com/questions/3004710/… 在这个答案(即传统的 maven 项目设置)中,使用了两个源文件夹 src/main/javasrc/test/java。因此,这两个类在同一个包中(在本例中为根包或默认包)。

以上是关于无法访问junit测试类中的包私有方法的主要内容,如果未能解决你的问题,请参考以下文章

反射那些事

无法访问扩展 Objective-C 类的 Swift 类中的私有变量

C++ 析构函数:无法访问类中声明的私有成员

子类可以继承父类的一切方法,成员变量,甚至是私有的,但是却不能够访问这些私有的成员变量和方法

如何访问其子类中的类的私有变量?

java中的内部类