示例#1
0
        private void init(object sender, EventArgs e)
        {
            List <String> files = new List <string>();

            try {
                files = Directory.GetFiles("tests", "*.dll").ToList();
            }
            catch (Exception ex) {
                log.Error("Ошибка получения файлов из директории tests", ex);
                MessageBox.Show("Ошибка получения файлов из директории tests", "Ошибка!", MessageBoxButtons.OK);
                Application.Exit();
            }

            //загрузка сборок с тестами
            foreach (string file in files)
            {
                try
                {
                    Assembly assembly = Assembly.LoadFrom(file);
                    foreach (Type type in assembly.GetTypes())
                    {
                        if (typeof(Test).IsAssignableFrom(type))
                        {
                            resultAssemblies.Add(assembly);
                            break;
                        }
                    }
                }
                catch (Exception ex) {
                    log.Error(String.Format("Ошибка загрузки сборки из {0}", file), ex);
                    MessageBox.Show(String.Format("Ошибка загрузки сборки из {0}", file), "Ошибка", MessageBoxButtons.OK);
                }
            }

            //обнаружение xlsx
            try
            {
                List <String> xlsxes = Directory.GetFiles("config", "*.xlsx").ToList();
                List <String> cfg    = Directory.GetFiles("config", "config*.xlsx").ToList();
                xlsxFiles.AddRange(xlsxes.Except(cfg));
            }
            catch (Exception ex) {
                log.Error("Ошибка получения xlsx файлов из директории config", ex);
                MessageBox.Show("Ошибка получения файлов xlsx из директории config", "Ошибка!", MessageBoxButtons.OK);
                Application.Exit();
            }

            //вывод dll в список
            foreach (Assembly assembly in resultAssemblies)
            {
                String assemblyName = assembly.GetName().Name;
                dllView.Items.Add(assemblyName);
                ListViewItemCollection xlsxCollection = new ListViewItemCollection(xlsxView);
                List <String>          xlsxFileCopy   = xlsxFiles.Select(item => (String)item.Clone()).ToList();
                ListViewItem[]         items          = xlsxFileCopy.Select(item => new ListViewItem(item)).ToArray();
                dllToXlsx.Add(assemblyName, items);
            }

            //создание представления конфигурирования теста если оно есть
            foreach (Assembly assembly in resultAssemblies)
            {
                foreach (Type type in assembly.GetTypes())
                {
                    try
                    {
                        if (typeof(TestConfigurationView).IsAssignableFrom(type))
                        {
                            TestConfigurationView tcv = (TestConfigurationView)Activator.CreateInstance(type);
                            dllToConfig.Add(assembly.GetName().Name, tcv);
                        }
                    }
                    catch (Exception ex)
                    {
                        log.Error("Ошибка создания экземпляра представления конфигурации теста", ex);
                        MessageBox.Show("Ошибка создания экземпляра представления конфигурации теста", "Ошибка!");
                    }
                }
            }
            dllView.Items[0].Selected = true;

            //установка настроек в интерфейсе в соответствии с конфиг файлом
            //конфигурирование
            try
            {
                Configuration config = Configuration.getInstance();
                JObject       json   = config.Config;

                foreach (Assembly assembly in resultAssemblies)
                {
                    if (json.ContainsKey(assembly.GetName().Name))
                    {
                        JObject asemblyConfig = (JObject)json[assembly.GetName().Name];
                        if (asemblyConfig.ContainsKey("data"))
                        {
                            JArray         data         = (JArray)asemblyConfig["data"];
                            ListViewItem[] listItems    = dllToXlsx[assembly.GetName().Name];
                            List <String>  items        = listItems.Select(item => item.Text).ToList();
                            List <String>  dataFiles    = data.ToObject <List <String> >();
                            List <String>  checkedFiles = dataFiles.Intersect(items).ToList();

                            foreach (String checkedFile in checkedFiles)
                            {
                                listItems.Where(item => item.Text == checkedFile).Single().Checked = true;
                            }
                        }

                        TestConfigurationView tcv = dllToConfig[assembly.GetName().Name];
                        if (asemblyConfig.ContainsKey("urls"))
                        {
                            tcv.Config["urls"] = (JArray)asemblyConfig["urls"];
                        }

                        if (asemblyConfig.ContainsKey("compare"))
                        {
                            tcv.Config["compare"] = (String)asemblyConfig["compare"];
                        }
                        tcv.init();
                    }
                }
            }
            catch (ConfigurationException ex)
            {
                log.Error("Ошибка конфигурирования приложения", ex);
                MessageBox.Show("Ошибка конфигурирования приложения", "Ошибка!", MessageBoxButtons.OK);
                Application.Exit();
            }
        }
示例#2
0
        private void createTestsBtn_Click(object sender, EventArgs e)
        {
            //конфигурация
            Configuration configuration = Configuration.getInstance();
            //выбор xlsx выбраных dll
            Dictionary <Assembly, ListViewItem[]> selectedDllToXlsx = new Dictionary <Assembly, ListViewItem[]>();
            CheckedListViewItemCollection         checkedItems      = this.dllView.CheckedItems;
            bool allHasChecked = false;

            if (checkedItems.Count == 0)
            {
                MessageBox.Show("Не выбрано ни одного теста");
            }
            else
            {
                foreach (ListViewItem item in checkedItems)
                {
                    Assembly            dll          = resultAssemblies.Single(a => a.GetName().Name == item.Text);
                    List <ListViewItem> xlsx         = dllToXlsx[dll.GetName().Name].ToList();
                    List <ListViewItem> selectedXlsx = new List <ListViewItem>();
                    bool hasChecked = false;
                    foreach (ListViewItem item1 in xlsx)
                    {
                        if (item1.Checked)
                        {
                            hasChecked    = true;
                            allHasChecked = allHasChecked || hasChecked;
                            selectedXlsx.Add(item1);
                        }
                    }
                    if (!hasChecked)
                    {
                        allHasChecked = allHasChecked && hasChecked;
                        MessageBox.Show(String.Format("Не выбрано ни одного тестового файла для {0}", dll.GetName().Name));
                    }
                    selectedDllToXlsx.Add(dll, selectedXlsx.ToArray());

                    //пишем конфигурацию
                    TestConfigurationView tcv = dllToConfig[dll.GetName().Name];
                    JObject testConfig        = tcv.Config;
                    JArray  data = new JArray();
                    for (int i = 0; i < selectedXlsx.Count; i++)
                    {
                        data.Add(selectedXlsx[i].Text);
                    }
                    testConfig["data"] = data;
                    JObject json = configuration.Config;
                    json[dll.GetName().Name] = testConfig;
                }
                if (allHasChecked)
                {
                    configuration.write();

                    //модальное окно создания тестов
                    List <Test>            tests = new List <Test>();
                    CreatingTestsModalForm modal = new CreatingTestsModalForm(selectedDllToXlsx, tests, configuration.Config);
                    modal.Owner = this;
                    DialogResult result = modal.ShowDialog();
                    if (result == DialogResult.OK)
                    {
                        SelectTestsToRunForm form = new SelectTestsToRunForm(tests, this);
                        this.Hide();
                        form.Show();
                    }
                }
            }
        }