كيف لإنشاء المثال تطبيق بسيط وحدة التحكم لتطوير فصول منفصلة لاختبار مدفوعة التنمية؟

StackOverflow https://stackoverflow.com/questions/810465

سؤال

وبلدي تنوي هو خلق تطبيق وحدة تصحيح الأخطاء بسهولة البسيط الذي سيكون القالب (أو نقطة البداية) لاختبار مدفوعة تطوير الطبقات واحدة في C #. والغرض من ذلك هو أن يكون مجلد بسيط حيث هذا التطبيق وحدة التحكم سوف يقيم ونسخ فقط لصق المجلد فتح مشروع جديد والبدء في كتابة فئة جديدة. وينبغي أن يكون في أقرب وقت الطبقة جميع وظائف اختبار (ويفضل الاختبارات في نفس الملف (أو مساحة على الأقل) سيسمح الطبقة الخوض في مشروع أكبر. أستخدمه NUnit وlog4net. إذا هل هذا النوع من نهج "صغيرة اختبار مدفوعة بناء وحدة" كيف هل تنفيذه. الرجاء، الرد على بعض التعليمات البرمجية أو تفسير. إذا كنت لا تستخدم، يرجى تقديم تفسير لماذا؟ هنا هو رمز (يتم لصق البيانات التكوين أيضا تعليقات ...)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net;
using log4net.Config;
using NUnit.Framework;

namespace NUnitSimple
{

  class TheClassToTest_Substractor
  {

    private static readonly ILog logger =
         LogManager.GetLogger ( typeof ( TheClassToTest_Substractor ) );



    public static void Substract ( int intToSusbractFrom , int intToSubstract , ref int intTheResult)
    {
     intTheResult = intToSusbractFrom - intToSubstract ; 
    }


    static void Main ( string[] args )
    {
      DOMConfigurator.Configure (); //tis configures the logger 


      logger.Info ( " START " );
      logger.Info ( " Hit a key to exit " );
      Console.ReadLine ();


    } //eof method 



  } //eof class 

  [TestFixture]//telling NUnit that this class contains test functions 
public class TestTheClassToTest_Substractor
{ 

     [Test]//telling NUnit that this function should be run during the tests 
    public void TestSubstractOk() 
    { 
       int intToSusbractFrom = 10 ; 
       int intToSubstract = 4 ; 
        int intTheResult = 0 ;
       TheClassToTest_Substractor.Substract ( intToSusbractFrom , intToSubstract , ref intTheResult ) ;
        Assert.AreEqual (  6 , intTheResult);
    }



     [Test]//telling NUnit that this function should be run during the tests 
     public void TestSubstractNOK ()
     {
       int intToSusbractFrom = 10;
       int intToSubstract = 4;
       int intTheResult = 0;
       TheClassToTest_Substractor.Substract ( intToSusbractFrom, intToSubstract, ref intTheResult );
       Assert.AreNotEqual ( 3, intTheResult );
     }

} //eof class 


} //eof namespace 




#region TheAppConfig
/*
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net"
         type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
      <param name="File" value="Program.log" />
      <param name="AppendToFile" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="Header" value="[Header] \r\n" />
        <param name="Footer" value="[Footer] \r\n" />
        <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n" />
      </layout>
    </appender>

    <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
      <mapping>
        <level value="ERROR" />
        <foreColor value="White" />
        <backColor value="Red, HighIntensity" />
      </mapping>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>


    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.2.10.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <connectionString value="data source=ysg;initial catalog=DBGA_DEV;integrated security=true;persist security info=True;" />
      <commandText value="INSERT INTO [DBGA_DEV].[ga].[tb_Data_Log] ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)" />

      <parameter>
        <parameterName value="@log_date" />
        <dbType value="DateTime" />
        <layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}" />
      </parameter>
      <parameter>
        <parameterName value="@thread" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout" value="%thread" />
      </parameter>
      <parameter>
        <parameterName value="@log_level" />
        <dbType value="String" />
        <size value="50" />
        <layout type="log4net.Layout.PatternLayout" value="%level" />
      </parameter>
      <parameter>
        <parameterName value="@logger" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout" value="%logger" />
      </parameter>
      <parameter>
        <parameterName value="@message" />
        <dbType value="String" />
        <size value="4000" />
        <layout type="log4net.Layout.PatternLayout" value="%messag2e" />
      </parameter>
    </appender>
    <root>
      <level value="INFO" />
      <appender-ref ref="LogFileAppender" />
      <appender-ref ref="AdoNetAppender" />
      <appender-ref ref="ColoredConsoleAppender" />
    </root>
  </log4net>
</configuration>
 */
#endregion TheAppconfig

#region TheXmlReferingToTheNUnitAndLog4NetInNUnitSimple.csprojFile
/*
     <Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\..\Log4Net\log4net-1.2.10\bin\net\2.0\release\log4net.dll</HintPath>
    </Reference>
    <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL" />
 */
#endregion
هل كانت مفيدة؟

المحلول

وبدلا من انشاء أأ المشروع ومن ثم قص ولصق، لماذا لا ننظر إلى أداة النصي مثل شجرة جراح لإقامة هيكل المشروع. هذا يؤدي إلى إعداد الحل والمشاريع والمجلدات المشروع. وهو يتضمن وظائف لكلا nUnit ونانت.

ومما لا شك فيه أن ننظر إلى بلوق وظائف تنعكس في الجزء السفلي من الصفحة الرئيسية المشروع.

وراجع للشغل: أنا أتفق مع جون السكيت على تطبيقات وحدة التحكم. ويمكن أن تكون مفيدة، ولكن إذا كان لديك أداة مثل TestDriven.Net للحصول على VS.2005 وفي وقت سابق، أو أدوات الاختبار VS.2008، يمكنك خطوة الى رمز اختبار الخاص بك دون خلق التطبيق تسخير الخاصة بك.

نصائح أخرى

وأنا لا أرى حقا ما فائدة هو أكثر بما في ذلك فئة جديدة في المشروع الحالي، بما في ذلك فئة اختبار جديدة في مشروع اختبار الحالية، وتشغيل اختبارات هناك.

لماذا يعرض التطبيق وحدة؟ هل حقا تحتاج إلى تشغيل الاختبارات من تطبيق وحدة التحكم وليس من احد المتسابقين اختبار الحالية؟ (لا تفهموني خطأ، وأنا معجب كبير من التطبيقات وحدة - أنا لا أرى كيف أنها تناسب هنا)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top