java - 如何对更改 Java 中数据的方法进行单元测试

标签 java unit-testing junit

假设我有如下代码

public boolean checkForecastIfCityRaining(String name){
    result = WeatherAPICallToSomeVendor(name)
    if(result = rain)return true; else return false;


}

如果结果数据会根据情况发生变化,我将如何进行单元测试 API 供应商提供的内容?

我会模拟每个场景的固定结果然后进行单元测试吗 是这样吗?

最佳答案

UNIT 测试实际上应该一次只测试一个方法(隔离该方法可能调用的其他功能)。我现在的团队可能会通过这样编写我们的函数来实现这一点:

public class WeatherCheck
{
    private ForecastService fs;
    public WeatherCheck(ForecastService fs)
    {
        forecastService = fs;
    }
    public boolean checkForecastIfCityRaining(String name){
        result = forecastService.weatherAPICallToSomeVendor(name)
        if(result = rain)return true; else return false;
}

这将允许我们将模拟预测服务传递到构造函数中。依赖注入(inject)会更好,但我们还没有这样做。

注意:我们区分单元测试和集成测试。我们仍然可以使用 Junit 编写我们的集成测试,但它们更倾向于出去实际戳服务——这可以提前向您发出失败警告。因此,您可以为 ForecastService 编写一个集成测试,它只需调用 ForecastService 的 weatherAPICallToSomeVendor 方法并确保无错误结果(可能没有异常或不返回 null...)。

关于java - 如何对更改 Java 中数据的方法进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51564694/

相关文章:

c++ - Microsoft Visual Studio 单元测试的 C2338 编译错误

java - 如何为具有 Autowiring 依赖项的类创建模拟 spring bean

c++ - Trac 不会解析谷歌测试 xml 输出文件

java - 卡在绘制一组数据点 (x,y) 上

java - 我的小程序出了什么问题?

为缓冲区溢出错误创建测试用例 (C/c++)

java - 无法在 VSCode 中运行 JUnit。无法识别 AssertEquals 符号

Java如何: proper GUI coding?

java - 如何控制连接到 RMI 服务器的多个客户端线程

unit-testing - 在构建单元测试项目时,VS 2010 找不到要测试的引用程序集