>source

일부 단위 테스트를 작성 중이며 템플릿/코드 조각을 만들고 싶습니다 (Visual Studio의 정확한 용어가 무엇인지 잘 모르겠습니다). 간단히 말해서 재사용 할 수있는 보일러 플레이트 코드를 만들고 싶습니다.

즉, 사용자는 클래스의 이름을 입력하고이를 사용하여 인터페이스, 클래스 및 일부 메소드 정의를 작성합니다.

예 : 사용자가 VATRate를 입력 한 경우

IVATRate는 xyz.Common.Interfaces에서 생성됩니다

VATRateRepository는 xyz.BusinessLayer에서 생성됩니다

VATRateRepositoryTests는 xyz.BusinessLayer.Tests에서 생성됩니다

VATRateREpositoryTest의 메소드가 정의됩니다. InsertVATRate_ShouldInsertNewRecord_WhenVatRateDoesNotExist UpsertVATRate_ShouldUpdateRecord_WhenRecordExist GetAllVATRate_ReadsAllRecords

등 ..

  • 답변 # 1

    Visual Commander 확장으로 자동화 할 수 있습니다. C #의 명령 코드는 다음과 같습니다.

    참조 : Microsoft.VisualBasic

    using EnvDTE;
    using EnvDTE80;
    using Microsoft.VisualBasic;
    public class C : VisualCommanderExt.ICommand
    {
        public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package) 
        {
            string className = Microsoft.VisualBasic.Interaction.InputBox("Class name", "Create tests",
                        "VATRate", -1, -1);
            EnvDTE.ProjectItem f = DTE.ItemOperations.AddNewItem("Visual C# Items\\Code\\Class", className + "RepositoryTests.cs");
            EnvDTE.CodeClass c = FirstClass(FirstNamespace(f.FileCodeModel.CodeElements).Children);
            c.AddFunction("Insert" + className, vsCMFunction.vsCMFunctionFunction, vsCMTypeRef.vsCMTypeRefVoid);
        }
        private EnvDTE.CodeNamespace FirstNamespace(EnvDTE.CodeElements elements)
        {
            foreach(EnvDTE.CodeElement c in elements)
            {
                if(c is EnvDTE.CodeNamespace)
                return c as EnvDTE.CodeNamespace;
            }
            return null;
        }
        private EnvDTE.CodeClass FirstClass(EnvDTE.CodeElements elements)
        {
            foreach (EnvDTE.CodeElement c in elements)
            {
                if (c is EnvDTE.CodeClass)
                    return c as EnvDTE.CodeClass;
            }
            return null;
        }
    }
    
    

    솔루션에서 프로젝트를 선택하고 VCmd 메뉴에서 명령을 실행하면 다음 파일이 생성됩니다.

관련 자료

  • 이전 drupal - Squarespace에서 마이그레이션
  • 다음 Wagtail을 배우는 동안 Python 모듈 이름 충돌