如何对具有95%依赖性的java项目进行单元测试。

时间:2014-02-26 07:22:26

标签: java unit-testing junit

我正在开发一个基于java的项目。这有很多依赖。每个进程都根据需要与服务器交互。我们可以使用任何单元测试吗?如果是,请使用示例&如果没有理由。

1 个答案:

答案 0 :(得分:1)

是的,您可以在此方案中使用测试。 您将不得不使用某种形式的模拟(Moq框架)来模拟服务器资源。

其中一个重要步骤是使用依赖注入。为了使用Moq框架,您需要进行大量的代码重构。例如。

class WeatherReportDisplay
{
    WeatherServerSomeWhereInIowa objserver = new WeatherServerSomeWhereInIowa();

    void PrintWeatherReport()
    {
        foreach (var item in objserver.Weather.Items)
        {
            Println(item.City + " " + item.temprature);
        }
    }
}

您必须将此表单的代码更改为

class WeatherReportDisplay
{
    IWeatherServer objserver;

    // Constructor Injection
    WeatherReportDisplay(IWeatherServer server)
    {
        if (server == null) throw new Exception("please send a server");

        this.objServer = server;
    }

    string WeatherReport()
    {
        return objServer.City + " " + objServer.temprature);
    }
}

在测试过程中你可以这样做

class UnitTest
{
    void Should_Return_NewYork_20DegreeBelowZero()
    {
        WeatherReportDisplay obj = new WeatherReportDisplay(new MockServer);
        var result = obj.PrintWeatherReport  ();
        Assert.IsEqual(result, "NewYork_20DegreeBelowZero");
    }
}