public TestRailListener(Dictionary <string, string> args)
        {
            try
            {
                _parameters = args;

                TestAssert.IsTrue(_parameters.TryGetValue("TestRailUrl", out _testRailUrl),
                                  "TestRailUrl not provided as listener parameter.");
                TestAssert.IsTrue(_parameters.TryGetValue("TestRailUser", out _testRailUser),
                                  "TestRailUser not provided as listener parameter.");
                TestAssert.IsTrue(_parameters.TryGetValue("TestRailPassword", out _testRailPassword),
                                  "TestRailPassword not provided as listener parameter.");
                TestAssert.IsTrue(_parameters.TryGetValue("TestRailProject", out _testRailProjectName),
                                  "TestRailProject not provided as listener parameter.");
                TestAssert.IsTrue(_parameters.TryGetValue("ProductVersion", out _productVersion),
                                  "ProductVersion not provided as listener parameter.");
                TestAssert.IsTrue(_parameters.TryGetValue("TargetEnvironment", out _targetEnvironment),
                                  "TargetEnvironment not provided as listener parameter.");
                TestAssert.IsTrue(_parameters.TryGetValue("Browser", out _browser),
                                  "Browser not provided as listener parameter.");
            }
            catch (Exception)
            {
                _validExecution = false;

                throw;
            }
        }
        public TestVerdict ConvertFile(
            [Core.TestParameter("Target test suite", "Enter the full path of test suite to convert.")]
            string targetTestSuite
            )
        {
            try
            {
                Setup();
                TestAssert.IsFalse(string.IsNullOrEmpty(targetTestSuite), "The target test suite cannot be a null or empty string value.");
                TestAssert.IsTrue(File.Exists(targetTestSuite), $"The target test suite path \"{targetTestSuite}\" is not a valid.");

                var testSuite = TestSuite.ReadFromOldFileFormat(targetTestSuite);
                TestSuite.Write(testSuite, true);

                //var testSuite = TestProperties.CurrentTestSuite;
                //TestSuite.SaveToFile2(testSuite);

                //TestSuite.ReadFromFile2(@"C:\DevProjects\Quintity\Quintity.TestFramework\Quintity.TestFramework - Trunk\Quintity.TestFramework.Scratch\TestOutput\TestSuiteIO.ste");

                TestVerdict = TestVerdict.Pass;
                TestMessage = "This is the initial test message.";
            }
            catch (Exception e)
            {
                TestMessage += e.ToString();
                TestVerdict  = TestVerdict.Error;
            }
            finally
            {
                Teardown();
            }

            return(TestVerdict);
        }
        public TestVerdict MyTestMethod(
            [TestParameter("String parameter", "Enter string parameter", "Default value")]
            string param1,
            [TestParameter("Int parameter", "Enter integer parameter", 0)]
            int param2,
            [TestParameter("Boolean parameter", "Enter boolean parameter", true)]
            bool param3)
        {
            try
            {
                Setup();

                TestTrace.Trace("This is a sample TestTrace message.");

                TestAssert.IsTrue(param3, "This is a sample assertion.");

                TestCheck.IsTrue("Test of param3", param3, "This is a sample TestCheck.");

                TestMessage += "This is the returned test message.";
                TestVerdict  = TestVerdict.Pass;
            }
            catch (TestAssertFailedException e)
            {
                TestMessage += e.ToString();
                TestVerdict  = TestVerdict.Fail;
            }
            catch (Exception e)
            {
                TestMessage += e.ToString();
                TestVerdict  = TestVerdict.Error;
            }
            finally
            {
                Teardown();
            }

            return(TestVerdict);
        }