使用带有void函数的C#进行单元测试

时间:2017-05-03 15:36:47

标签: c# unit-testing

如何对下面的类进行单元测试,因为代码中没有任何值且没有返回,我应该在不修改代码的情况下进行单元测试。我应该在测试单元中写什么

任何帮助?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace ORS
{
    public partial class DoctorAddEditMarks : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Label2.Text = "" + Session["Username"];
        }

        protected void LinkButton2_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/DoctorMainPage.aspx");
        }

        protected void LinkButton1_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/LoginPage.aspx");
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {

                GridViewRow row = GridView1.Rows[i];

                string coursecode = DropDownList1.SelectedValue.ToString();
                string marktype = DropDownList2.SelectedValue.ToString();
                string fullmark = TextBox1.Text;
                string stid = row.Cells[0].Text;
                TextBox txtmark = (TextBox)row.Cells[1].FindControl("TextBox2");
                string mark = txtmark.Text;

                String strConnString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
                SqlConnection con = new SqlConnection(strConnString);
                String query = "insert into Marks values (@St_ID, @CourseCode, @MarkType, @Mark, @FullMark)";
                SqlCommand cmd = new SqlCommand(query, con);
                cmd.Parameters.AddWithValue("@CourseCode", coursecode);
                cmd.Parameters.AddWithValue("@St_ID", stid);
                cmd.Parameters.AddWithValue("@MarkType", marktype);
                cmd.Parameters.AddWithValue("@Mark", mark);
                cmd.Parameters.AddWithValue("@FullMark", fullmark);
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();

            }

            ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('Marks are SuccessFully Saved');window.location ='DoctorAddEditMarks.aspx';", true);

        }
}
}

1 个答案:

答案 0 :(得分:0)

能够对此进行测试的第一步是将数据库代码隔离到自己的类中。单元测试.aspx页面几乎是不可能的。

您编写的测试在技术上不是单元测试 - 它是一个集成测试。不同之处仅在于它的测试不仅仅是您的代码。它正在测试代码和数据库的组合功能。

This page显示了编写这些测试的一些简单方法。它遵循典型的编配/行为/断言模式。

安排

  • 确保表格中没有干扰什么的数据 我即将测试
  • 准备我的输入

行动

  • 调用方法以插入我的数据

断言

  • 按照我的预期验证数据是否在表格中

然后我通常会在最后进行清理,以删除我修改的任何测试数据,这通常只是重复第一步。