public void Setup()
        {
            FakeQueryWorker.ClearTotalExecutions();
            FakeQueryWorker.ClearInstances();

            _queryStressTest = new QueryStressTest
            {
                ConnectionString         = _connectionString,
                ThreadCount              = 1,
                Iterations               = 1,
                DbProvider               = new FakeDbProvider(),
                Query                    = _query,
                OnQueryExecutionComplete = (_) => { },
                QueryParameters          = Array.Empty <ParameterSet>()
            };
        }
        public void QueryStatisticsAreReportedAfterEachExecution()
        {
            int onQueryExecutionInvocations = 0;
            int iterations = 5;

            var queryStressTest = new QueryStressTest
            {
                ConnectionString         = _connectionString,
                ThreadCount              = 1,
                Iterations               = iterations,
                DbProvider               = new FakeDbProvider(),
                Query                    = _query,
                QueryParameters          = Array.Empty <ParameterSet>(),
                OnQueryExecutionComplete = (executionStats) => {
                    Interlocked.Increment(ref onQueryExecutionInvocations);
                }
            };

            queryStressTest.BeginInvoke();
            queryStressTest.Wait();

            Assert.AreEqual(iterations, FakeQueryWorker.TotalExecutionCount);
        }