Как получить TestCategory для тестового набора с помощью C#, Visual Studio MS Test

Я ищу тестовую категорию тестового примера во время выполнения, используя С#. Я использую MSTEST, TestContext не имеет никакой информации, связанной с TestCategory, я хочу записывать/регистрировать информацию о TestCategory. В моем случае у меня есть несколько TestCATEGORIES, назначенных тестовому набору. Пример

BaseTest будет иметь методы Initialization и CleanUp.

[TestClass]
    public class CustomerTest : BaseTest
    {
        [TestMethod]
        [TestCategory("Smoke")]
        [TestCategory("regression")]
        public void Login()

person msbyuva    schedule 09.10.2015    source источник


Ответы (1)


Вы можете использовать отражение, чтобы получить атрибуты внутри тестового метода следующим образом:

[TestMethod]
[TestCategory("Smoke")]
[TestCategory("regression")]
public void Login()
{
    var method = MethodBase.GetCurrentMethod();
    foreach(var attribute in (IEnumerable<TestCategoryAttribute>)method
        .GetCustomAttributes(typeof(TestCategoryAttribute), true))
    {
        foreach(var category in attribute.TestCategories)
        {
            Console.WriteLine(category);
        }
    }
    var categories = attribute.TestCategories;  
}

Если вы хотите получить категории в другом месте, чем внутри метода тестирования, вы можете использовать

var method = typeof(TheTestClass).GetMethod("Login");

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

Источник: Чтение значения атрибута метода

person venerik    schedule 09.10.2015
comment
спасибо, что показали мне, как это сделать, и предоставили источник. - person msbyuva; 09.10.2015
comment
В моем случае для теста у меня есть три категории, когда я выполняю тест - я регистрирую категорию теста. Из VSConsole, когда я выполняю на основе TestCaseFilter, но он регистрирует три категории. Могу ли я явно установить что-то, что говорит о том, что tetscase настроен для запуска в этой категории -- TestCaseFilter - person msbyuva; 09.10.2015
comment
Я не знаю. Я предлагаю вам опубликовать новый вопрос для этого. - person venerik; 10.10.2015