📕 xUnit?C# .NET 테스트 자동화 툴입니다.근데 솔직히 아직 뭐가 좋은지 모르겠음 집계해주는거 ? 병렬로 해주는거? 이건 그냥 라이브러리 안쓰고도 할 수 있지 않나 🖼️ 환경 설정 1. 테스트 솔루션 생성테스트를 하기 위해, 공식 문서의 예제 파일을 생성하는 방법입니다. ( 출처 : xUnit 공식문서 ) dotnet new install xunit.v3.templatesdotnet new xunit3쉘에 위 스크립트를 실행시키면, 아래와 같이 솔루션 파일이 생겨납니다. 2. 현재 솔루션에 xUnit 적용개발된 솔루션에 xUnit만 추가하는 방법입니다. xUnit을 추가할 프로젝트의 csproj 파일을 텍스트 뷰어로 열어줍니다. 저는 위와 같이 나오네요. 솔루션 파일의 ..
좋은 서버 개발자가 무엇인가! 바로 서버가 죽지 않게 개발하는 서버 개발자이다. 그러려면 실행 에러에 대한 잡지식이 많아야 하는것같다. 컴파일 에러는 IDE 가 잡아 주니... 그래서 이제 이 페이지에 잡지식을 기록해 보려고 한다. 2024년 3월 22일 금요일 1. 제너릭를 쓸 때, 제너릭 변수 자리에 null을 넣으면 서버가 터진다 2. 클래스를 사용할 때, 널인 상태에서 맴버를 찾으려고 하면 서버가 터진다. 2024년 4월 9일 화요일 3. List.AddRange(null) 은 에러난다.
lock 을 하면 비동기를 사용할 수 없다. 더보기 정확히는 위험하다. ( lock(리소스) {작업} 식으로 사용할 때에는 아예 컴파일 에러가 난다. ) lock 은 다른 스레드에서 이 리소스에 접근하지 못하게 하는 기법이기 때문이다. 비동기 호출을 하게 되면 await 를 할 때마다 실행 중이던 작업이 중지되고 대기 상태가 되었다가 스레드 풀의 스레드 중 하나에서 실행이 되는데, 이때 스레드가 원래 lock 을 했던 스레드가 아닐 가능성이 매우 높기 때문에 이 리소스에 접근하지 못하게 되는 현상이 생겨날 수 있다. 아무튼 이런 이유 때문에 비동기 함수에서 lock 을 주의해서 써야 한다. 비동기에서 lock 을 사용하려면 SemaporeSlim 을 사용하면 된다. SemaphoreSlim 은 lock ..
생성자 public class Mom { public Mom() { Console.Write("mom "); } } public class Son : Mom { public Son() { Console.Write("son "); } } public static void Main() { new Son(); // mom son new Mom(); // mom } mom son mom 상속 public class Mom { public void Print() { Console.Write("mom "); } } public class Son : Mom { public void Print() { Console.Write("son "); } } public static void Main() { var son = n..
해시테이블 딕셔너리 Key, Value 모두 자료형을 지정할 필요 없다. Key, Value 모두 자료형을 지정해야 한다. 박싱-언박싱 을 사용한다. 박싱-언박싱 을 사용하지 않는다. 해시 테이블의 박싱-언박싱 과정에서 데이터가 값 복사가 일어날 것이라 생각했는데, 참조가 보호된다. var list = new List(); list.Add(1); Console.WriteLine(JsonSerializer.Serialize(list)); var hashTable = new Hashtable(); hashTable.Add(1, list); var listInHash = hashTable[1]; var convertedListInHash = (List)listInHash; convertedListInHash...
프로그램을 비정상 종료하면 에러가 뜰때가 많습니다. 이러한 경우의 에러를 없애는 방법 몇가지에 대해 소개드리겠습니다. 제가 발견한 방법은, 비정상 종료 시 호출되는 이벤트에 콜백 메서드를 추가하는 것이었습니다! 제가 찾은 이벤트는 두 종류입니다! Console.CancleKeyPress 사용 - Stop 버튼을 눌러 프로그램을 종료한 경우 - Ctrl + c 를 눌러 프로그램을 종료한 경우 using System.Diagnostics; using System.Runtime.CompilerServices; using TCPClient; class Program { private static List clients = new List(); public static void Main(string[] args)..