【发布时间】:2020-10-09 19:48:32
【问题描述】:
我需要使用 TestNG 测试 StockPrice 类中的 getPrice() 方法。并覆盖priceCalculator() 方法内的行
public class StockPrice {
public double getPrice(){
Stock stock = getStock();
return finalPrice(stock,1000,true);
}
private double finalPrice(Stock stock, int price, boolean isDiscountAvailable){
return stock.priceCalculator(price,isDiscountAvailable)-100;
}
private Stock getStock(){
return new Stock()
{
@Override
public double priceCalculator(int price, boolean isDiscountAvailable)
{
if (isDiscountAvailable){
return price-price/10;
}else {
return price;
}
}
};
}
}
interface Stock{
double priceCalculator(int price, boolean isDiscountAvailable);
}
我尝试通过多种方式覆盖 1 priceCalculator() 方法中的行,但由于以下原因没有成功
- getStock() 方法是私有方法,因此无法访问它。我尝试使用反射来访问它,但得到了
java.lang.NoSuchMethodException: - getStock() 返回匿名对象。然后不能覆盖行 priceCalculator() 方法
你能给我一个解决方案来覆盖priceCalculator方法中的行吗?
总之,我需要覆盖以下代码。
@Override
public double priceCalculator(int price, boolean isDiscountAvailable)
{
if (isDiscountAvailable){
return price-price/10;
}else {
return price;
}
}
【问题讨论】:
标签: java unit-testing testng