VBA Excel 매크로에서 유닛 테스트를 설정하는 방법은 무엇입니까?
Excel 파일을 가져와서 스크럽/청소하고 2장의 워크북을 제작하는 Excel VBA 매크로 작업 중입니다. 1장은 원래 '더러운' 파일이고 2장은 깨끗하게 스크럽된 파일입니다.
현재 10개의 서로 다른 형식이 있으며 앞으로 40개 이상이 될 것입니다.주어진 파일 집합에 대해 이 출력을 저장한 다음 원래 입력을 가져와서 매크로를 실행한 다음 매크로의 출력을 저장된 예상 출력과 비교하는 단위 테스트를 작성하고 싶습니다.
그런 다음 나중에 유지보수를 수행할 때 언제든지 빠르고 쉽게 장치 테스트를 실행하여 이미 작동한 장치가 손상되지 않았는지 확인할 수 있습니다.
저는 VBA와 함께 일하는 것이 처음입니다.프레임워크나 플러그인을 검색했는데 도움이 많이 안 됩니다.엑셀 스프레드시트 2장 전체를 비교할 수 있는 기능을 찾았습니다. 그래서 그 부분을 적어두었습니다.하지만 이제 이 유닛 테스트를 실제로 작성하고 실행하는 방법을 알아내야 합니다.단위 테스트를 작성하는 것은 매우 간단해야 합니다. 하지만 어떻게 실행해야 합니까?스프레드시트에 '단위 테스트 실행' 버튼을 추가하고 싶지 않습니다...VBA/Excel에서 임의 기능을 실행하여 UnitTest 기능을 마우스 오른쪽 버튼으로 클릭하고 '실행'하면 되는 방법이 있습니까?
유닛 테스트에 대한 저의 계획에 대한 추가적인 피드백도 감사합니다.다시한번 감사합니다.
Rubberduck은 IDE 통합 유닛 테스트 프레임워크를 포함하는 무료 오픈 소스 VBE 애드인으로 대부분의 주요 Office 제품에서 작동합니다.
- 최신 릴리스를 다운로드하여 설치합니다.
- VBA 프로젝트가 있는 Excel 워크북을 엽니다.
- 도구 >> 참조로 이동하여 Rubberduck에 대한 참조를 추가합니다.
- 새 표준 모듈을 추가합니다.
추가합니다.
'@TestModule
속성을 지정하고 의 인스턴스를 생성합니다.Rubberduck.AssertClass
`@TestModule Private Assert As Rubberduck.Assert
쓰기 테스트를 시작합니다.표시된 모든 공용 서브
'@TestMethod
속성은 테스트 탐색기에서 검색하여 실행합니다.'@TestMethod Public Sub OnePlusOneIsTwo() Assert.AreEqual 2, Add(1,1) End Sub
자세한 내용은 프로젝트 Wiki의 유닛 테스트 페이지를 참조하십시오.
고지 사항: 저는 그 프로젝트의 개발자 중 한 명입니다.
저라면 테스트할 시트를 참조하는 두 번째 스프레드시트를 만들 것입니다.(도구 > 참조 > 찾아보기)이 새 워크북에는 기본 워크북을 더럽히지 않고 원하는 모든 테스트가 포함될 수 있습니다.또한 원하는 경우 인터페이스를 직접 구축할 수 있습니다.
참고로 Excel 매크로 메뉴에서 절차를 숨기려고 하지만 여전히 액세스할 수 있는 경우 모듈 상단에 다음을 입력합니다.
Option Private Module
그런 다음 "공개"를 사용할 수 있도록 모든 절차를 수행합니다.그런 다음 바로 옆 창(VBE의 ctrl-g)에서 호출할 수 있지만 매크로 목록에는 나열되지 않습니다.
그러나 장치 테스트를 별도로 유지하면(아마도 그래야 할 것입니다) 공용/개인 모듈에 대해 걱정할 필요가 없습니다.
몇 년 동안 보지 못했지만 vba Unit은 잘 작동했습니다...
물론, 개발자 탭(Excel 2007) 아래에는 실행할 수 있는 모든 매크로가 나열된 매크로 단추가 있습니다.목록에서 선택하고 실행을 클릭합니다.이전 버전도 동일한 기능을 가지고 있지만 위치가 기억나지 않습니다.
다음은 2003 버전에 대한 링크입니다.
http://spreadsheets.about.com/od/advancedexcel/ss/excel_macro_5.htm
언급URL : https://stackoverflow.com/questions/1792188/how-to-setup-a-unit-test-in-vba-excel-macro
'programing' 카테고리의 다른 글
이미지를 이미지 보기에 맞추고 가로 세로 비율을 유지한 다음 이미지 보기 크기를 이미지 크기에 맞게 조정하시겠습니까? (0) | 2023.09.01 |
---|---|
UI 스택 보기 보기 숨기기 애니메이션 (0) | 2023.09.01 |
SQL 데이터베이스에서 사용자의 모든 관계를 찾는 방법은 무엇입니까? (0) | 2023.09.01 |
폼이 다양한 수의 값을 반환할 수 있으며, 반환된 값을 독트린 쿼리에 사용하려고 시도합니다. (0) | 2023.09.01 |
jQuery는 어디서 배울 수 있습니까?그만한 가치가 있나요? (0) | 2023.09.01 |