Что касается моего предыдущего вопроса , мне нужно проверить, может ли компонент, который будет создан Castle Windsor, собираться мусором после того, как мой код завершит его использование. Я попробовал предложение в ответах на предыдущий вопрос, но, похоже, оно не работает, как ожидалось, по крайней мере, для моего кода. Поэтому я хотел бы написать модульный тест, который проверяет, может ли конкретный экземпляр объекта быть собранным после выполнения части моего кода.
Это возможно сделать надежным способом?
EDIT
В настоящее время у меня есть следующий тест, основанный на ответе Пола Стовелла, который проходит успешно:
[TestMethod]
public void ReleaseTest()
{
WindsorContainer container = new WindsorContainer();
container.Kernel.ReleasePolicy = new NoTrackingReleasePolicy();
container.AddComponentWithLifestyle<ReleaseTester>(LifestyleType.Transient);
Assert.AreEqual(0, ReleaseTester.refCount);
var weakRef = new WeakReference(container.Resolve<ReleaseTester>());
Assert.AreEqual(1, ReleaseTester.refCount);
GC.Collect();
GC.WaitForPendingFinalizers();
Assert.AreEqual(0, ReleaseTester.refCount, "Component not released");
}
private class ReleaseTester
{
public static int refCount = 0;
public ReleaseTester()
{
refCount++;
}
~ReleaseTester()
{
refCount--;
}
}
Прав ли я, если предположить, что на основании приведенного выше теста я могу сделать вывод, что Windsor не будет пропускать память при использовании NoTrackingReleasePolicy?