MSTest & AppDomains

Как уже упоминалось в комментариях, функция обратного вызова должна возвращать значение, чтобы это полностью работало. Чтобы связать все вместе, вам просто нужен оператор return $url в конце обратного вызова, например:

function toLink($titulo){
    $url = '~(?:(https?)://([^\s<]+)|(www\.[^\s<]+?\.[^\s<]+))(?'.$url.'';
        }
        return $url;    // <---- return the $url
    },$titulo);


    return $titulo;
}


echo toLink("hi from www.google.com");

Проверьте результат на https://eval.in/1079110 [112 ]

12
задан Shrike 2 November 2008 в 01:13
поделиться

3 ответа

Я не думаю, что механизм модульного теста создает новый AppDomain для каждого теста. Начиная с создания AppDomain относительно дорогая операция, делая, таким образом, для каждого теста замедлил бы выполнение модульных тестов значительно!

Visual Studio 2008 использует отдельный исполняемый файл под названием vstesthost.exe для выполнения модульных тестов. VS общается с vstesthost.exe (как он делает это, я не знаю) сказать это что тесты работать. vstesthost.exe возвращает результаты выполнения VS, который отображает те результаты.

Если бы Вы получаете OutOfMemoryExceptions при выполнении модульных тестов, я сказал бы, что это - сильный индикатор, что код под тестом на самом деле не очищает вещи. Вы уверены, что не сохраняете дескрипторы к неуправляемым объектам/памяти? Я рекомендовал бы выполнить Ваши модульные тесты при Анализе Производительности (можно сделать это путем нахождения модульного теста при "Тестовом Представлении", щелчка правой кнопкой по нему, и выбор "Создает Сессию Производительности"). Это могло бы пролить некоторый свет, по крайней мере, на Ваши объектные выделения.

8
ответ дан 2 December 2019 в 05:28
поделиться

MsTest создает домен с одним приложением на Опытную сборку, если Вы не используете noisolation, в этом случае нет никакой Изоляции AppDomain.

Если Вы видите утечки, вероятно, a, но или в Вашем тестовом коде или в Вашем коде продукта. Удостоверьтесь, что Вы не наполняете вещи в словари и оставляете их там.

11
ответ дан 2 December 2019 в 05:28
поделиться

Я был неправ относительно наличия отдельного AppDomains для каждого unittest.

Вот доказательство: одиночный элемент

public class Singleton
{
    public static Singleton Instance = new Singleton();

    private Guid _token;
    private Singleton()
    {
        _token = Guid.NewGuid();
    }

    public Guid Token
    {
        get { return _token; }
    }
}

и два теста:

[TestClass]
public class UnitTest2
{
    [TestMethod]
    public void TestMethod1()
    {
        Console.WriteLine(Singleton.Instance.Token);
    }
}
[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {
        Console.WriteLine(Singleton.Instance.Token);
    }
}

Во время выполнения обоих тестов производит тот же гуид.

7
ответ дан 2 December 2019 в 05:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: