⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nunitform.cs

📁 C#编写的网络爬虫程序 效率很高 很好用!
💻 CS
📖 第 1 页 / 共 4 页
字号:
			stopButton.Enabled = false;

			if ( IsTestRunning )
			{
				DialogResult dialogResult = UserMessage.Ask( 
					"Do you want to cancel the running test?" );

				if ( dialogResult == DialogResult.No )
					stopButton.Enabled = true;
				else
					TestLoader.CancelTestRun();
			}
		}

		/// <summary>
		/// When a tree item is selected, display info pertaining 
		/// to that test unless a test is running.
		/// </summary>
//		private void OnSelectedTestChanged( UITestNode test )
//		{
//			if ( !IsTestRunning )
//			{
//				suiteName.Text = test.ShortName;
//				statusBar.Initialize( test.CountTestCases() );
//			}
//		}
//
//		private void OnCheckedTestChanged(System.Collections.IList tests)
//		{
//			if ( !IsTestRunning ) 
//			{
//				int count = 0;
//				foreach (UITestNode test in tests) 
//				{
//					count += test.CountTestCases();
//				}
//				statusBar.Initialize(count);
//			}
//		}

		#endregion

		#region Event Handlers for Test Load and Unload

		private void OnTestProjectLoaded( object sender, TestProjectEventArgs e )
		{
			SetTitleBar( e.ProjectName );
			projectMenu.Visible = true;
		}

		private void OnTestProjectUnloaded( object sender, TestProjectEventArgs e )
		{
			SetTitleBar( null );
			projectMenu.Visible = false;
		}

		private void OnTestLoadStarting( object sender, TestEventArgs e )
		{
			runButton.Enabled = false;
		}

		private void OnTestUnloadStarting( object sender, TestEventArgs e )
		{
			runButton.Enabled = false;
		}

		private void OnReloadStarting( object sender, TestEventArgs e )
		{
			runButton.Enabled = false;
		}

		/// <summary>
		/// A test suite has been loaded, so update 
		/// recent assemblies and display the tests in the UI
		/// </summary>
		private void OnTestLoaded( object sender, TestEventArgs e )
		{
			runButton.Enabled = true;
			ClearTabs();
			
			Version currentVersion = Assembly.GetExecutingAssembly().GetName().Version;
			if ( TestLoader.FrameworkVersion == null )
			{
				UserMessage.Display( "This assembly was not built with the NUnit framework and contains no tests.", "Not a Test Assembly");
			}
			else if ( TestLoader.FrameworkVersion != currentVersion )
			{
				string msg = string.Format( "This assembly is using version {0} of the framework.\rThe {1} assembly is referencing version {2} of the framework.\r\rIf problems arise, rebuild the assembly referencing version {0}",
					currentVersion, e.Name, TestLoader.FrameworkVersion, currentVersion );
				UserMessage.Display( msg, "Incompatible nunit.framework.dll");
			}
		}

		/// <summary>
		/// A test suite has been unloaded, so clear the UI
		/// and remove any references to the suite.
		/// </summary>
		private void OnTestUnloaded( object sender, TestEventArgs e )
		{
			suiteName.Text = null;
			runButton.Enabled = false;

			ClearTabs();
		}

		/// <summary>
		/// The current test suite has changed in some way,
		/// so update the info in the UI and clear the
		/// test results, since they are no longer valid.
		/// </summary>
		private void OnTestChanged( object sender, TestEventArgs e )
		{
			if ( UserSettings.Options.ClearResults )
				ClearTabs();

			runButton.Enabled = true;
		}

		private void OnProjectLoadFailure( object sender, TestProjectEventArgs e )
		{
			UserMessage.DisplayFailure( e.Exception, "Project Not Loaded" );

			UserSettings.RecentProjects.Remove( e.ProjectName );

			runButton.Enabled = true;
		}

		/// <summary>
		/// Event handler for assembly load faiulres. We do this via
		/// an event since some errors may occur asynchronously.
		/// </summary>
		private void OnTestLoadFailure( object sender, TestEventArgs e )
		{
			UserMessage.DisplayFailure( e.Exception, "Assembly Not Loaded" );

			if ( !IsTestLoaded )
				OnTestUnloaded( sender, e );
			else
				runButton.Enabled = true;
		}

		#endregion

		#region Handlers for Test Running Events

		/// <summary>
		/// A test run is starting, so prepare the UI
		/// </summary>
//		private void InvokeRunStarting( object sender, TestEventArgs e )
//		{
//			Invoke( new TestEventHandler( OnRunStarting ), new object[] { e } );
//		}

		private void OnRunStarting( object sender, TestEventArgs e )
		{
			suiteName.Text = e.Test.ShortName;
			runButton.Enabled = false;
			stopButton.Enabled = true;

			ClearTabs();
		}

		/// <summary>
		/// A test run has finished, so display the results
		/// and re-enable the run button.
		/// </summary>
		private void InvokeRunFinished( object sender, TestEventArgs e )
		{
			Invoke( new TestEventHandler( OnRunFinished ), new object[] { e } );
		}

		private void OnRunFinished( object sender, TestEventArgs e )
		{
			stopButton.Enabled = false;
			runButton.Enabled = false;

			if ( e.Exception != null )
			{
				if ( ! ( e.Exception is System.Threading.ThreadAbortException ) )
					UserMessage.DisplayFailure( e.Exception, "NUnit Test Run Failed" );
			}

			runButton.Enabled = true;
		}

		private void OnTestFinished(object sender, TestEventArgs args)
		{
			TestCaseResult result = (TestCaseResult) args.Result;
			if(result.Executed)
			{
				if(result.IsFailure)
				{
					TestResultItem item = new TestResultItem(result);
					string resultString = String.Format("{0}:{1}", result.Name, result.Message);
					detailList.BeginUpdate();
					detailList.Items.Insert(detailList.Items.Count, item);
					detailList.EndUpdate();
				}
			}
			else
			{
				notRunTree.Add( result );
			}
		}

		private void OnSuiteFinished(object sender, TestEventArgs args)
		{
			TestSuiteResult suiteResult = (TestSuiteResult) args.Result;
			if(!suiteResult.Executed)
				notRunTree.Add( suiteResult );
		}

		private void OnTestException(object sender, TestEventArgs args)
		{
			string msg = string.Format(
				"An unhandled exception was detected. Since it was most likely thrown on a separate thread, it may or may not have been caused by the current test.\r\r{0}",
				args.Exception.ToString() );

			UserMessage.DisplayFailure( msg, "Unhandled Exception" );
		}

		#endregion

		#region Helper methods for modifying the UI display

		/// <summary>
		/// Clear info out of our four tabs and stack trace
		/// </summary>
		private void ClearTabs()
		{
			detailList.Items.Clear();
			detailList.ContextMenu = null;
			toolTip.SetToolTip( detailList, null );
			notRunTree.Nodes.Clear();

			stdErrTab.Clear();
			stdOutTab.Clear();
			
			stackTrace.Text = "";
		}

		/// <summary>
		/// Set the title bar based on the loaded file or project
		/// </summary>
		/// <param name="fileName"></param>
		private void SetTitleBar( string fileName )
		{
			this.Text = fileName == null 
				? "NUnit"
				: string.Format( "{0} - NUnit", Path.GetFileName( fileName ) );
		}

		#endregion	

		#region DetailList Events

		// Note: These items should all be moved to a separate user control

		/// <summary>
		/// When one of the detail failure items is selected, display
		/// the stack trace and set up the tool tip for that item.
		/// </summary>
		private void detailList_SelectedIndexChanged(object sender, System.EventArgs e)
		{
			TestResultItem resultItem = (TestResultItem)detailList.SelectedItem;
			//string stackTrace = resultItem.StackTrace;
			stackTrace.Text = resultItem.StackTrace;

			//			toolTip.SetToolTip(detailList,resultItem.GetToolTipMessage());
			detailList.ContextMenu = detailListContextMenu;
		}

		private void detailList_MeasureItem(object sender, System.Windows.Forms.MeasureItemEventArgs e)
		{
			TestResultItem item = (TestResultItem) detailList.Items[e.Index];
			string s = item.ToString();
			SizeF size = e.Graphics.MeasureString(item.GetMessage(), detailList.Font);
			e.ItemHeight = (int)size.Height;
			e.ItemWidth = (int)size.Width;
		}

		private void detailList_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
		{
			if (e.Index >= 0) 
			{
				e.DrawBackground();
				TestResultItem item = (TestResultItem) detailList.Items[e.Index];
				bool selected = ((e.State & DrawItemState.Selected) == DrawItemState.Selected) ? true : false;
				Brush brush = selected ? Brushes.White : Brushes.Black;
				e.Graphics.DrawString(item.GetMessage(),detailList.Font, brush, e.Bounds);
				
			}
		}

		private void copyDetailMenuItem_Click(object sender, System.EventArgs e)
		{
			if ( detailList.SelectedItem != null )
				Clipboard.SetDataObject( detailList.SelectedItem.ToString() );
		}

		private void detailList_MouseHover(object sender, System.EventArgs e)
		{
			if ( tipWindow != null ) tipWindow.Close();

			if ( hoverIndex >= 0 && hoverIndex < detailList.Items.Count )
			{
				Rectangle itemRect = detailList.GetItemRectangle( hoverIndex );
				string text = detailList.Items[hoverIndex].ToString();

				tipWindow = new TipWindow( detailList, hoverIndex );
				tipWindow.ItemBounds = itemRect;
				tipWindow.TipText = text;
				tipWindow.Expansion = TipWindow.ExpansionStyle.Both;
				tipWindow.Overlay = true;
				tipWindow.WantClicks = true;
				tipWindow.Closed += new EventHandler( tipWindow_Closed );
				tipWindow.Show();
			}		
		}

		private void tipWindow_Closed( object sender, System.EventArgs e )
		{
			tipWindow = null;
		}

		private void detailList_MouseLeave(object sender, System.EventArgs e)
		{
			hoverIndex = -1;
		}

		private void detailList_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
		{
			hoverIndex = detailList.IndexFromPoint( e.X, e.Y );		
		}

		#endregion

		private void testTree_SelectedTestsChanged(object sender, SelectedTestsChangedEventArgs e)
		{
			if (!IsTestRunning) 
			{
				suiteName.Text = e.TestName;
				statusBar.Initialize(e.TestCount);
			}
		}

		private void helpMenuItem_Click(object sender, System.EventArgs e)
		{
			FileInfo exe = new FileInfo( Assembly.GetExecutingAssembly().Location );
			// In normal install, exe is in bin directory, so we get parent
			DirectoryInfo dir = exe.Directory.Parent;
			// If running from bin\Release or bin\Debug, go down two more
			if ( dir.Name == "bin" ) dir = dir.Parent.Parent;

			string helpUrl = ConfigurationSettings.AppSettings["helpUrl"];

			if ( helpUrl == null )
			{
				UriBuilder uri = new UriBuilder();
				uri.Scheme = "file";
				uri.Host = "localhost";
				uri.Path = Path.Combine( dir.FullName, @"doc/index.html" );
				helpUrl = uri.ToString();
			}

			System.Diagnostics.Process.Start( helpUrl );
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -