Совместное использование состояния среди тестовых методов в MSTest - PullRequest
2 голосов
/ 17 октября 2008

Как поделиться состоянием среди TestMethods в MSTest. Эти тесты будут выполняться как упорядоченные тесты и в последовательности.

    private TestContext testContext;

    public TestContext TestContext
    {
        get { return this.testContext; }
        set { this.testContext = value;}
    }

    [TestMethod]
    public void Subscribe()
    {
        bool subscribed = true;
        TestContext.Properties.Add("subscribed", subscribed);
        Assert.IsTrue(subscribed == true, string.Format("Subscribed...{0}", this.GetHashCode()));
    }


    [TestMethod]
    public void GenerateEvent()
    {
        bool subscribed = (bool)TestContext.Properties["subscribed"];
        Assert.IsTrue(subscribed == true, string.Format("Subscribed...{0}", this.GetHashCode()));

    }

Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 17 октября 2008

Vyas, я согласен с Чадом, что ты все еще делаешь это неправильно.

Тем не менее, вы можете посмотреть на использование объекта TestContext.

См. http://blogs.msdn.com/vstsqualitytools/archive/2006/01/10/511030.aspx

0 голосов
/ 14 сентября 2011

Вы можете обмениваться информацией между тестами, сохраняя ее в статических полях или свойствах уровня класса вместо TestContext. Таким образом, есть только одна копия. Кроме того, все, что один тест помещает в эти поля или свойства, будет доступно для любых последующих тестов.

Сказав, что ... заказанные и / или взаимозависимые тесты все еще являются злом.

0 голосов
/ 31 декабря 2008

Вы можете обмениваться данными между методами тестирования, используя статические элементы.

Например:

private static List<string> SharedValues = new List<string>();

[TestMethod]
public void TestMethod1()
{
   SharedValues.Add("Awesome!");
}

[TestMethod]
public void TestMethod2()
{
   SharedValues.Add("Thanks for the answer!");
}

[TestMethod]
public void TestMethod3()
{
    Assert.IsTrue(SharedValues.Contains("Awesome!"));
    Assert.IsTrue(SharedValues.Contains("Thanks for the answer!"));
}

Скопируйте этот код и создайте новый заказанный тест, проверяя TestMethod1, TestMethod2, TestMethod3. Это пройдет!

0 голосов
/ 19 октября 2008

Как заметил Чад, похоже, у меня нет другого выбора, кроме как использовать один тест [на этот раз инструмент заставляет меня делать правильные вещи;)] для проверки всего потока.

Кажется, что я мог бы использовать TestContext.BeginTimer & EndTimer для определения времени каждого вызова в методе.

Вот ссылка на форум MSDN, где я получил этот ответ

...