僅當測試計劃運行時,才在Nunit測試播放列表中顯示測試

我想以這樣的方式設置我的框架:只有當測試設置為運行時,它才會列在Nunit測試播放列表(TestExplorer)中,否則根本不會在列表中顯示。

我的計劃-我將有一個外部數據源,如csv、xlsx或DB,帶有測試數據的行和列。其中一列將具有運行標志,該標志將決定是否需要運行局部測試。如果標志設置為false,則nunit不應將其視為測試,也不應將其顯示在測試播放列表中(即使測試方法具有屬性[test])或報告中。請注意,我知道“忽略”屬性,但我不想將其用作-此類測試在測試報告或播放列表中顯示為“跳過”。

根據表,播放列表應該只列出并執行TestMethod1和TestMethod2。

注意:我已經嘗試了[TestCase]和[TestCaseSource],但對于每種方法,我都可以看到播放列表和報告中列出的不需要的測試方法。

? 最佳回答:

我探索了一下,實現了我想要的。令人驚訝的是,查理也提出了同樣的建議,所以我很有信心。可以有更多的方法或代碼可以進一步優化,我正在添加我迄今為止嘗試的內容。注意:列表中只有一個方法不會被執行/跳過。您無法避免這種情況,因為相同的方法會為列表生成實際的測試方法。

namespace AutoRunNunit
{
    internal class TestClass
    {
        [TestCaseSource(typeof(TestDataDummy), "DataProvider")]
        public void RunTest(string methodName, string data)
        {
            typeof(TestClass).GetMethod(methodName).Invoke(null, new[] { data });
        }

        public static void TestMethod1(string data)
        {
            Assert.AreEqual(data, "12");
        }
        
        public static void TestMethod2(string data)
        {
            Assert.AreEqual(data, "13");
        }

       
        public class TestDataDummy
        {
            private static IEnumerable<TestCaseData> DataProvider()
            {
                var testCases = new List<TestCaseData>();

                ArrayList data = GetDataFromExcelDummy();

                foreach (string[] str in data)
                { 
                    testCases.Add(new TestCaseData(str[1], str[2]).SetName(str[1]));

                }

                return testCases;  
            }
        }

        
        public static ArrayList GetDataFromExcelDummy()
        {
            string connectionString = "";

            string path = @"C:\Test\";
            string filename = "TestData.xls";

            if (filename.Contains(".xls"))
            {
                connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + filename + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
            }
            else if (filename.Contains(".xlsx"))
            {
                connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + filename + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
            }

            string query = "SELECT * FROM [Data01$]";
            using (OleDbConnection connection = new OleDbConnection(connectionString))
            {
                OleDbCommand command = new OleDbCommand(query, connection);

                connection.Open();
                OleDbDataReader reader = command.ExecuteReader();

                var lines = new List<string>();
                while (reader.Read())
                {
                    var fieldCount = reader.FieldCount;

                    var fieldIncrementor = 1;
                    var fields = new List<string>();
                    while (fieldCount >= fieldIncrementor)
                    {
                        fields.Add(reader[fieldIncrementor - 1].ToString());
                        fieldIncrementor++;
                    }

                    lines.Add(string.Join("\t", fields));
                }
                reader.Close();


                ArrayList list = new ArrayList();

                foreach (string str in lines)
                {
                    string[] words = str.Split();

                    if (!words[4].Equals("0"))
                    {
                        list.Add(words);
                    }
                }

                return list;
            }
        }
    }
}
主站蜘蛛池模板: 美女毛片一区二区三区四区| 无码夜色一区二区三区| 在线免费观看一区二区三区| 伦理一区二区三区| AV鲁丝一区鲁丝二区鲁丝三区| 成人无码一区二区三区| 国产品无码一区二区三区在线| 亚洲A∨无码一区二区三区| 高清一区二区三区| 亚洲日韩一区精品射精| 无码欧精品亚洲日韩一区| а天堂中文最新一区二区三区| 在线免费视频一区| 日本高清天码一区在线播放| 亚洲欧美日韩一区二区三区在线| 老熟妇仑乱视频一区二区 | 亚洲国产精品一区二区久久hs| 日本一区二区三区中文字幕| 性盈盈影院免费视频观看在线一区| 国产香蕉一区二区在线网站| 91一区二区视频| 亚洲一区二区三区在线| 91大神在线精品视频一区| 精品人无码一区二区三区| 亚洲视频一区二区在线观看| 一区二区视频在线| 亚洲综合一区二区| 3d动漫精品啪啪一区二区中 | 亚洲日本一区二区三区| 精品国产日产一区二区三区| 久久久久一区二区三区| 亚洲AV无码一区东京热久久| 日韩精品区一区二区三VR| 亚洲香蕉久久一区二区三区四区| 精品人妻AV一区二区三区| 天堂Av无码Av一区二区三区| 秋霞日韩一区二区三区在线观看 | 国产凸凹视频一区二区| 国产三级一区二区三区| 亚洲国产成人久久一区久久| 狠狠综合久久AV一区二区三区|