MonoGame 프로젝트를 만들고 기존 코드에 대해 Unit Tests를 만들고 싶습니다. 테스트 프로젝트를 만들고 GameLopp 클래스 (게임과 함께 제공되는 Game1.cs 클래스의 My Rename)에 대한 간단한 테스트로 시작했습니다.Monogame은 단위 테스트에서 Game 생성자를 호출 할 수 없습니다.
내 혼란에public GameLoopTest()
{
using (GameLoop game = new GameLoop())
{ game.Run(); }
}
public void Dispose()
{
_gameloop = null;
}
[Fact]
public void GameLoop_Setup_Suceeds()
{
this.Should().NotBeNull();
}
많은 시험의 생성자는 NullReference 예외를 throw : 나는 기본 테스트가 문제없이 생성자 빌드보다 특정하기 위해 '설치 성공'만들었습니다. 디버그 모드에서 테스트를 수행하면 GraphicsDeviceManager를 찾을 수 없다는 자세한 예외가 발생합니다. 나는 광범위하게 검색했지만 오류가 발생하는 이유 또는 해결 방법을 생각해 낼 수 없었습니다.
나는 그 클래스에 많은 코드가 없지만, 유닛 테스트에서 밝혀진 중요한 것을 남겨 두는 것을 싫어한다.
생성자를 확인하는 테스트를 사용하는 것이 약간의 반 패턴이지만, 문제를 일으키는 테스트 관련 코드가 아니라는 것을 확인하는 가장 좋은 방법 인 것처럼 보입니다. – ChargerIIC
어떤 종류의 IoC/Dependency Injection 프레임 워크를 사용합니까? (당신은 무엇을 사용합니까?). 테스트를 할 때 IoC 설정을 돌봐야합니까? –
Xunit/FluentAssertions 사용. Mocking을 위해서 나는 NSubsitute를 얻었습니다. 그저 그 Monogame. 내가 Dependency Injection 자체를 사용하는 것에 익숙하지 않다는 것을 나는 믿지 않는다. – ChargerIIC