使用NUnit進行併發測試

下面的代碼將演示如何使用NUnit進行併發測試,啓動多線程插入多個數據,並在插入完數據後刪除數據

 

using System;
using System.Collections.Generic;
using System.Text;
using NUnit.Framework;
using WYEng.SQLServerDAL;
using System.Threading;
using System.Data;
using System.Data.SqlClient;

namespace WYEng.TestUnit
{
    [TestFixture]
    
public class ExamComputerInfo
    
{
        SQLServerDAL.ExamComputerInfo computerInfo;
        WYEng.Model.ExamComputerInfo mCompuerInfo;
        
private int j = 0;
        
private int computerID = 0;
        
private string PARAM_COMPUTERID = "@ComputerID";
        [SetUp]
        
public void CreateObject()
        
{
            computerInfo 
= new WYEng.SQLServerDAL.ExamComputerInfo();
            mCompuerInfo 
= new WYEng.Model.ExamComputerInfo();
            TestGetComputerID();
        }


        [TearDown]
        
public void DeleteObject()
        
{
            TestDeleteComputerInfo();
            computerInfo 
= null;
            mCompuerInfo 
= null;

        }

        
private void TestGetComputerID()
        
{
            computerID 
= XPWY.DBUtility.DBHelperSQL.GetMaxID("ComputerID""ExamComputerInfo");
        }

        
private void TestDeleteComputerInfo()
        
{
            Console.WriteLine(computerID.ToString());
            
string strSql = "DELETE FROM ExamComputerInfo WHERE ComputerID>=@ComputerID";
            SqlParameter pram 
= new SqlParameter(PARAM_COMPUTERID, SqlDbType.Int);
            pram.Value 
= computerID;
            XPWY.DBUtility.DBHelperSQL.ExecuteSql(strSql,pram);
        }

        [Test]
        [Ignore(
"爲了測試併發插入的問題,屏蔽該方法")]
        
public void GetComputerInfo()
        
{
            Thread[] threads 
= new Thread[1000];
            
for (int i = 0; i < 1000; i++)
            
{
                Thread t 
= new Thread(new ThreadStart(Func));
                threads[i] 
= t;
            }

            
for (int i = 0; i < 1000; i++)
            
{
                threads[i].Start();
            }

     
            
        }

        
private void Func()
        

            mCompuerInfo 
= computerInfo.GetComputerInfo(1);
            Assert.AreEqual(mCompuerInfo.ComputerName, 
"YMF-XPWY");
        }

        [Test]
        
public void GetComputerInfoByMAC()
        
{
            mCompuerInfo 
= computerInfo.GetComputerInfoByMAC("00:1B:FC:64:6C:A3");
            Assert.AreEqual(mCompuerInfo.ComputerName, 
"YMF-XPWY");//正常條件
            mCompuerInfo = computerInfo.GetComputerInfoByMAC("00:sdfsdfsdf");
            Assert.AreEqual(mCompuerInfo, 
null);//邊界條件
        }


        [Test]
        
public void TestInsertCPInfoWhileMorePeoper()
        
{
            Thread[] threads 
= new Thread[1000];
            
for (int i = 0; i < 1000; i++)
            
{
                j
++;
                threads[i] 
= new Thread(new ThreadStart(TestInsertCPInfo));
                threads[i].Start();
            }

        }

        
private void TestInsertCPInfo()
        
{
            mCompuerInfo.AudioDapater 
= j.ToString();
            mCompuerInfo.BrowserInfo 
= j.ToString();
            mCompuerInfo.ComputerName 
= "fw";
            mCompuerInfo.EthernetAddress 
= "asdsad";
            mCompuerInfo.ExamSeatNo 
= j;
            mCompuerInfo.IpAddress 
= "192.168.0.1";
            mCompuerInfo.IsTestPassed 
= true; ;
            mCompuerInfo.NotPassedError 
= "yes";
            mCompuerInfo.OSName 
= "OSName";
            mCompuerInfo.OSVersion 
= "1.0.1";
            computerInfo.InsertCPInfo(mCompuerInfo);
        }

    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章