Software Develop/C# , .NET , WPF 6

private, protected method 단위 테스트 코드 작성하기

프로젝트를 진행할 때, 필수적으로 해야하는 것들 중에 하나가 바로 테스트 코드가 아닐까 싶다. 개발된 메서드마다 해당 메서드가 정상적으로 동작하는지 여러 가지 케이스를 통해 함수의 신뢰성을 보장할 수 있다. 메서드 접근 지정자 우리는 메서드를 개발할 때 접근 지정자를 항상 지정한다. (public, protected, private) public일 경우에는 단위 테스트 코드를 작성하는 것에 아무런 문제가 없지만, protected나 private의 경우에는 테스트 객체에서 메서드에 대한 접근이 불가능하기 때문에 한계가 발생한다. 우회 방법 보통 접근이 어려운 메서드에 대한 테스트 코드를 작성하기 위해서 다양한 우회 방법이 있다. 그 중 몇 가지를 소개하고자 한다. 지금부터 나오는 테스트 코드 예제는 아래..

ListBox 사용하기

프로젝트를 진행하다가 보면 목록을 보여줘야 하는 경우가 빈번하게 발생한다. 그럴 때마다 어떤 Control을 사용하는게 좋을 지 고민하게 된다. 필자의 경우에는 Column 정보가 필요할 경우에는 ListView를, 각 Cell 단위의 작업이 필요할 경우에는 DataGrid를 Column 정보없이 하나 하나의 Item이 중요할 때에는 ListBox를 사용한다. 가장 최근에는 ListBox를 이용하여 원하는 목록 UI를 구성했다. 그래서 오늘은 ListBox를 사용하는 방법에 대해 설명하고자 한다. ListBox란? ListBox는 기본적으로 ListBoxItem의 목록을 나타낸다. ListBoxItem에 어떠한 내용이 있던간에 ListBox는 해당 ListBoxItem 목록을 나타내고 이를 사용하는 기능..

Adonis UI 사용기

최근 WPF를 이용하여 사이드 프로젝트를 사용하기로 했다. 회사에서 그 동안 주구장창 Infragistics를 사용해와서 다른 UI toolkit을 사용해보고 싶었다. 적절한 대상을 찾기 위해 Nuget을 검색해보다가 Adonis UI라는 패키지를 발견했다. Adonis UI Home Lightweight UI toolkit for WPF applications offering classic but enhanced windows visuals benruehl.github.io Adonis UI는 메인 페이지의 설명처럼 '경량 UI 툴킷'이다. 기본적으로 WPF에서 제공하는 UI에 입힐 수 있는 Style을 제공하는 컨셉으로 구현 되어있다. 상대적으로 Control을 직접 제공하는 개수가 적은 것으로 보인..

Lazy<T>

Lazy란? .NET은 4.0 이후 버전에서 Lazy 형식을 제공한다. Lazy을 사용하면 객체 생성에 있어서 초기화 지연이 가능하다. 이게 무슨 말이냐면, T 형식의 객체가 Lazy를 사용하면 최초로 호출되는 시점에 생성된다는 것이다. 예시 아래 Lazy의 사용 예시를 보자. public class LazyCallClass { private Lazy _test; public LazyTest Test => _test.Value; public LazyCallClass() { _test = new Lazy(() => new LazyTest()); Console.WriteLine($"{nameof(LazyCallClass)} is created."); } } public class LazyTest { } st..

ReactiveUI

배경 MVVM 패턴을 자주 사용하는데 주로 Prism.MVVM 프레임워크의 BindableBase를 사용해왔다. 큰 불편함을 느끼지 못해서 그냥 사용해왔는데, 어느 날 회사 동료가 소개해준 ReactiveUI를 알게 된 후부터는 계속 ReactiveUI를 사용하고 있다. Prism.MVVM도 물론 굉장히 좋은 프레임워크임은 분명하나 ReactiveUI는 반응형으로 설계되어 있어 보다 직관적인 UI 작업이 가능하다. 또한 코드도 간결해지고 이해하기 쉬워진다. 오늘은 ReactiveUI를 소개해보고자 한다. ReactiveUI란? An advanced, composable, reactive model-view-viewmodel framework Declarative Describe what you want,..

Crawling (Selenium)

Crawling Crawl의 사전적의미는 "기어가다"라는 뜻이다. 개발에서는 웹 사이트의 정보를 긁어오는 것을 의미한다. 아마 웹 사이트를 기어다니면서 정보를 수집하는 행위가 아닐까..? Selenium 셀레늄 (소프트웨어) - 위키백과, 우리 모두의 백과사전 ko.wikipedia.org Selenium은 코드에서 웹 접근과 제어에 대한 기능을 제공해주는 프레임워크이다. 이 프레임워크를 통해 Crawling을 수행할 수 있다. 예제 이론적인 설명은 이 정도까지만 하기로 하고 일단 해보기로 하자. Selenium Nuget Package .NET 환경에서 Crawling을 해보고자 한다. 먼저 Nuget Package에서 아래 항목을 추가해준다. Selenium.WebDriver Selenium.WebD..