相关疑难解决方法(0)

如何测试私有函数或具有私有方法,字段或内部类的类?

如何对具有内部私有方法,字段或嵌套类的类进行单元测试(使用xUnit)?或者通过内部链接(static在C/C++中)或在私有(匿名)命名空间中使其成为私有的函数?

为了能够运行测试而更改方法或函数的访问修饰符似乎很糟糕.

java tdd unit-testing

2593
推荐指数
36
解决办法
82万
查看次数

我应该测试私有方法还是仅测试公共方法?

我读过这篇关于如何测试私有方法的帖子.我通常不测试它们,因为我一直认为只测试从对象外部调用的公共方法会更快.你测试私人方法吗?我应该经常测试吗?

language-agnostic testing unit-testing

329
推荐指数
16
解决办法
10万
查看次数

注释使私有方法仅对测试类公开

谁有针对这一共同需求的解决方案.

我的应用程序中有一个类.

一些方法是公共的,因为它们是api的一部分,有些是私有的,因为它们用于内部使用,使内部流程更具可读性

现在,我想写一个单元测试,或者更像是集成测试,它将位于不同的包中,允许调用此方法,但是,我希望不允许正常调用此方法如果你试图从应用程序本身的类中调用它

所以,我在想这样的事情

public class MyClass {

   public void somePublicMethod() {
    ....
   }

   @PublicForTests
   private void somePrivateMethod() {
    ....
   }
}
Run Code Online (Sandbox Code Playgroud)

上面的注释将私有方法标记为"公共测试",这意味着,对于任何在test ...包下的类,将允许编译和运行时,而编译和\或运行时将对任何类失败不在测试包下.

有什么想法吗?有这样的注释吗?有一个更好的方法吗?

似乎你写的单元测试越多,你的更多信息就会破坏你的封装......

java junit unit-testing annotations

83
推荐指数
5
解决办法
11万
查看次数

如何使用JUnit在Java中测试抽象类?

我是JUnit的Java测试新手.我必须使用Java,我想使用单元测试.

我的问题是:我有一个带有一些抽象方法的抽象类.但是有些方法并不是抽象的.如何使用JUnit测试此类?示例代码(非常简单):

abstract class Car {

    public Car(int speed, int fuel) {
        this.speed = speed;
        this.fuel = fuel;
    }

    private int speed;
    private int fuel;

    abstract void drive();

    public int getSpeed() {
        return this.speed;
    }

    public int getFuel() {
        return this.fuel;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想测试getSpeed()getFuel()功能.

这个问题的类似问题在这里,但它没有使用JUnit.

在JUnit FAQ部分中,我找到了这个链接,但我不明白作者想用这个例子说些什么.这行代码是什么意思?

public abstract Source getSource() ;
Run Code Online (Sandbox Code Playgroud)

java junit abstract-class

82
推荐指数
6
解决办法
9万
查看次数