带有void类型的单元测试方法

本文关键字:单元 测试方法 类型 void 带有 | 更新日期: 2023-09-27 18:04:58

我有一些代码如下所示,其中有多个方法调用web服务从数据库获取一些数据。这将产生一组字段,然后从web应用程序添加到另一个数据库。这一切都很好,但我不知道如何对其进行单元测试,因为它主要输出空白,以及来自数据库的数据,每次点击按钮都会发生变化。是否有一种方法来单元测试,如果方法工作与否?对不起,我对单元测试很陌生,但我知道它有多重要,所以任何帮助都会很感激。

    //Get webservice service
    private Service1 GetService()
    {
        return new TestProjectService.Service1();
    }
    //Choose which webservice we want to use based on radio button selection
    private TestProjectService.CommandMessages GetCommand(Service1 service)
    {
        var command = new TestProjectService.CommandMessages();
        switch (WebServiceRadio.SelectedIndex)
        {
            case 0:
                command = service.GetData();
                break;
            case 1:
                command = service.GetDataLINQ();
                break;
        }
        return command;
    }
    //Display the results in a label on screen
    private void DisplayResult(string text)
    {
        LatestCommandLabel.Text = text;
    }
    //Get the current username of the user logged in
    public string GetUsername()
    {
        return System.Security.Principal.WindowsIdentity.GetCurrent().Name;
    }
    //Submit the data to the database using Linq
    private void SubmitData(string username, TestProjectService.CommandMessages command)
    {
        var dc = new TestProjectLinqSQLDataContext();
        var msg = new TestProjectCommandMessage
        {
            Command_Type = command.CommandType,
            Command = command.Command,
            DateTimeSent = command.DateTimeSent,
            DateTimeCreated = command.DateTimeCreated,
            Created_User = username,
            Created_Dttm = DateTime.Now
        };
        dc.TestProjectCommandMessages.InsertOnSubmit(msg);
        dc.SubmitChanges();
    }
    //Return the value and submit data to database
    private void ReturnValue()
    {
        var service = GetService();
        var command = GetCommand(service);
        var username = GetUsername();
        if (command != null)
        {
            DisplayResult(String.Format("Last Command Called (Using {0}) : {1}", WebServiceRadio.SelectedItem.ToString(), command.Command));
            string userName = GetUsername();
            SubmitData(username, command);
        }
        else
        {
            DisplayResult("No Commands Available");
        }
    }
    //Onlick return value
    protected void GetCommandButton_Click(object sender, EventArgs e)
    {
        ReturnValue();
    }

带有void类型的单元测试方法

行为验证是用于测试不返回任何值的方法的方法。

简而言之,由于方法不返回任何结果,测试所能做的唯一事情就是确保方法导致适当的操作发生。这通常是通过使用mock对象来完成的,mock对象跟踪其方法是否被调用。

为了让你的测试使用test double,你需要在你的系统设计中包含接缝。

强烈推荐阅读Mark Seeman的《. net中的依赖注入》。因为你是单元测试的新手,毫无疑问你对单元测试的机制有很多疑问(这个答案可能会引发更多的问题)——这本书非常详细地回答了这些问题。