私は初めてテスト駆動開発を実装しようとしています。私のプロジェクトはdotnet3.5のac#です。「ProfessionalTestDrivenDevelopment in c#」という本を読んだので、Windowsサービスを含むプロジェクトをテストしたいと思います。ベストプラクティスは、すべてのコードをテストする必要があることです。以下は、私のWindowsサービスです。メソッドonStartおよびonStopを実装します
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
using System.Threading;
using log4net;
namespace MyUcmaService
{
public partial class MyUcmaService : ServiceBase
{
private Worker _workerObject;
private static MyUcmaService aMyUcmaService;
private Thread _workerThread;
private static ILog _log = LogManager.GetLogger(typeof(MyUcmaService));
public MyUcmaService()
{
InitializeComponent();
aMyUcmaService = this;
}
protected override void OnStart(string[] args)
{
// TODO: inserire qui il codice necessario per avviare il servizio.
//Debugger.Launch();
AppDomain.CurrentDomain.UnhandledException += AppDomainUnhandledException;
try
{
_workerObject = new Worker();
_workerThread = new Thread(_workerObject.DoWork);
// Start the worker thread.
_workerThread.Start();
}
catch (Exception ex)
{
HandleException(ex);
}
}
protected override void OnStop()
{
// TODO: inserire qui il codice delle procedure di chiusura necessarie per arrestare il servizio.
try
{
_workerObject.RequestStop();
_workerThread.Join();
}
catch (Exception ex)
{
HandleException(ex);
}
}
private static void AppDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
HandleException(e.ExceptionObject as Exception);
}
private static void HandleException(Exception ex)
{
if (ex == null)
return;
_log.Error(ex);
if (aMyUcmaService != null)
{
aMyUcmaService.OnStop();
}
}
}
}
ここでtddを実装する方法を教えてください。返信ありがとうございます。