나는 지금 조금씩 몰을 사용 해왔다.몰 (Moles)과의 큰 배치 단계를 가진 러닝 유닛 테스트가 느리다.
그러나보다 광범위한 배치 작업이 필요한 단위 테스트를 처리 할 때 단위 테스트는 전적으로 걸립니다.
HostType ("Moles") 속성을 지정하지 않고 단위 테스트 코드를 실행하면 배열 작업이 < (호스트 이름 (A) 2 초 사이에 10 초)가됩니다. Moles 호스트 속성을 추가하면이 시간이 약 4-5 분으로 확장됩니다.
무슨 일이 벌어지고 있으며 어떻게해야합니까?
---- BryanBCook의 답변과 관련하여 업데이트되었습니다.
다음은 문제가있는 코드입니다 (약간 수정 됨). 문제가 일리노이의 재 작성이라면 필자는 기대하지 않는 곳에서 일어난 것처럼 보인다. 그것이 모든 것을 다시 쓰는지 아십니까? 나는 또한 두더지 호스트 프로세스에서 스케일링 문제가 있는지 궁금하다.
[ClassInitialize()]
public static void ClassInit(TestContext ctx)
{
Common.Logging.Moles.MExceptionEvent.LogExceptionStringStringStringString = delegate(Exception ex, string a, string b, string c, string d)
{
Debug.WriteLine(String.Format("Exception occurred in test context '{0}' : {1} ", ctx.TestName, ex.ToString()));
};
Common.Logging.Moles.MCriticalEvent.LogStringStringTraceEventTypeStringString = delegate(string a, string b, TraceEventType tet, string c, string d)
{
Debug.WriteLine(String.Format("Critical Event occurred in test context '{0}' : {1} ", ctx.TestName, a));
};
Common.Logging.Moles.MDebugEvent.LogStringStringTraceEventTypeStringString = delegate(string a, string b, TraceEventType tet, string c, string d)
{
//Debug.WriteLine(String.Format("Debug Event occurred in test context '{0}' : {1} ", ctx.TestName, a));
};
/*there are about 1MM lines of code that generate this dataset.*/
DataSet _ds = dg.STDDataHelper.GenerateDataSet();
/*This is where the delay occurs*/
m_std = new STD(_ds);
/*Now another object (implements web caching) gets moled to use the newly constructed object*/
BizObjects.Moles.MSCO.STDs = delegate()
{
return m_std;
};
m_co1 = new Company(dg.Company.CTSDataHelper.COMPANY_ONE_CODE);
m_co1.HydrateCoTaxDefinitions(dg.Company.CTSDataHelper.GenerateCompanyOneDataset());
m_co2 = new Company(dg.Company.CTSDataHelper.COMPANY_ONE_CODE);
m_co2.HydrateCoTaxDefinitions(dg.Company.CTSDataHelper.GenerateCompanyTwoDataset());
}
---
그래서 STD가 초기화됩니다 후 로깅 몰 일어날 수 있도록 클래스 초기화를 정리하고 전체 STD 객체의 3 디버그 로깅 문을 (그들이 정말 쓸모)를 제거하는 또 다른 갱신 건설 나무는 약 1 분 30 초로 배열 작업을 줄였습니다.
이것은 최적이 아니지만 (STD 객체 트리 구조의 예외는 테스트되는 실제 테스트가 아니라 테스트가 실패 할 것입니다.), 여전히이 페널티를 지불하는 것보다 낫습니다. 특히 시공 입력이 엄격하게 관리되기 때문에 특히 그렇습니다.
그런데, 나는 두더지 호스트 프로세스가 약 138MB의 램과 13 %의 프로세서만을 사용한다는 것을 알았습니다. 두더지가 없으면 (그리고 단위 테스트에 모든 의존성 추가), 표준 호스트는 그 이상을 사용할 것입니다 (이 comp은 i7 Quad와 8GB 램을 가지고 있습니다 - 여유 공간이 충분합니다). 두더지 호스트 프로세스가 일종의 한계를 넘는 것처럼 보입니다.
대답이 대답 할 때, 그것은 느리고 Moles에서도 잘 설명되어 있습니다. – leppie
내가 말했듯이, 우리 (14 명)는 아마도이 테스트를위한 1.5 분의 설치 시간을 다룰 수 있습니다. (잘하면 "productized"버전의 pex/moles가 조금 더 효과적입니다.) 나는 정말로 새로운 질문 영역으로 벤처하기 시작 했으므로 나는이 문제에 대해 어슬렁 거리지 않을 것이다. – StingyJack
상용 제품을 구입 한 경우 TypeMock Isolator (http://www.typemock.com/isolator-product-page)도 참고하십시오. 성능이 현명 할 수도 있습니다. 불행히도, Moles는 일리노이 다시 작성을 수행하는 유일한 무료 mocker입니다. :( – leppie