Как зарегистрироваться для тестирования вывода с помощью тестов unit c # [duplicate]

Set - хороший подход здесь, потому что он заказывает переменные, что кажется вашей целью здесь. {z,y,x} - {0,1,3} независимо от порядка параметров.

>>> ["cdef"[i] for i in {z,x,y}]
['c', 'd', 'f']

Таким образом, все решение O (n).

64
задан CodeCaster 21 October 2015 в 14:23
поделиться

11 ответов

Попробуйте использовать TestContext.WriteLine(), который выводит текст в результатах теста.

Пример:

    [TestClass]
    public class UnitTest1
    {
        private TestContext testContextInstance;

        /// <summary>
        ///  Gets or sets the test context which provides
        ///  information about and functionality for the current test run.
        ///</summary>
        public TestContext TestContext
        {
            get { return testContextInstance; }
            set { testContextInstance = value; }
        }

        [TestMethod]
        public void TestMethod1()
        {
            TestContext.WriteLine("Message...");
        }
    }

«Магия» описана в MSDN как «База тестов автоматически устанавливает свойство, которое затем можно использовать в модульных тестах».

74
ответ дан SharpC 26 August 2018 в 10:43
поделиться

Я не получаю никакого вывода, когда мои настройки Test / Test Settings / Default Processor Architecture и сборки, которые ссылаются на мои тестовые проекты, не совпадают. В противном случае Trace.Writeline () работает нормально.

0
ответ дан Arthur Greef 26 August 2018 в 10:43
поделиться

Trace.WriteLine должен работать, если вы выберете правильный вывод (раскрывающийся список с надписью «Показать вывод из», найденным в окне «Выход»)

0
ответ дан dandan78 26 August 2018 в 10:43
поделиться

Я использую xunit, поэтому это то, что я использую: Debugger.Log(0, "1", input);

PS: вы можете использовать Debugger.Break();, чтобы вы могли видеть, что вы входите в систему out

0
ответ дан Ivandro Ismael 26 August 2018 в 10:43
поделиться

Вы уверены, что выполняете свои модульные тесты в Debug? Debug.WriteLine не будет отбрасываться в версиях выпуска.

Две возможности для проверки:

  • Trace.WriteLine (), который встроен в сборку выпусков inot, а также debug
  • Определить DEBUG в настройках сборки для модульного теста
0
ответ дан Jason Williams 26 August 2018 в 10:43
поделиться

Это зависит от вашего тестового бегуна ... например, я использую XUnit, поэтому, если это то, что вы используете, следуйте этим инструкциям:

https: // xunit. github.io/docs/capturing-output.html

Этот метод группирует ваш вывод с каждым конкретным модульным тестом.


using Xunit;
using Xunit.Abstractions;

public class MyTestClass
{
    private readonly ITestOutputHelper output;

    public MyTestClass(ITestOutputHelper output)
    {
        this.output = output;
    }

    [Fact]
    public void MyTest()
    {
        var temp = "my class!";
        output.WriteLine("This is output from {0}", temp);
    }
}

Есть еще один метод, указанный в ссылке Я предусмотрел запись в окно вывода, но предпочитаю предыдущий.

5
ответ дан jonzim 26 August 2018 в 10:43
поделиться

Я думаю, что это все еще актуально.

Вы можете использовать этот пакет NuGet: https://www.nuget.org/packages/Bitoxygen.Testing.Pane/

Вызвать собственный метод WriteLine из этой библиотеки. Он создает тестовую панель внутри окна вывода и всегда размещает сообщения (во время каждого тестового прогона независимо от флагов DEBUG и TRACE).

Чтобы сделать трассировку более легкой, я могу рекомендовать создать базовый класс:

[TestClass]
public abstract class BaseTest
{
    #region Properties
    public TestContext TestContext { get; set; }

    public string Class
    {
        get { return this.TestContext.FullyQualifiedTestClassName; }
    }
    public string Method
    {
        get { return this.TestContext.TestName; }
    }
    #endregion

    #region Methods
    protected virtual void Trace(string message)
    {
        System.Diagnostics.Trace.WriteLine(message);

        Output.Testing.Trace.WriteLine(message);
    }
    #endregion
}

[TestClass]
public class SomeTest : BaseTest
{
    [TestMethod]
    public void SomeTest1()
    {
        this.Trace(string.Format("Yeah: {0} and {1}", this.Class, this.Method));
    }
}
4
ответ дан Maxim 26 August 2018 в 10:43
поделиться

Решено в следующем примере:

public void CheckConsoleOutput()
    {
        Console.WriteLine("Hi Hi World");
        Trace.WriteLine("Trace Trace the World");
        Debug.WriteLine("Debug Debug WOrld");
        Assert.IsTrue(true);
    }

После запуска этого теста в разделе «Test Passed» есть возможность просмотреть вывод, который откроет окно вывода.

0
ответ дан Mike 26 August 2018 в 10:43
поделиться

Немного поздно к разговору.

Я также пытался заставить Debug или Trace или Console или TestContext работать в Unit Testing.

Ни один из этих методов не появился работать или показывать вывод в окне вывода.

    Trace.WriteLine("test trace");
    Debug.WriteLine("test debug");
    TestContext.WriteLine("test context");
    Console.WriteLine("test console");

VS2012 и Greater (из комментариев) В Visual Studio 2012 нет значка. Вместо этого в результатах теста есть ссылка, называемая Output. Если вы нажмете на ссылку, вы увидите все WriteLine.

До VS2012 я тогда заметил в окне результатов теста, после запуска теста, рядом с зеленым кругом успеха, есть другой значок, я удвоил его. Это были мои результаты теста, и он включал все типы писем выше.

117
ответ дан Nick DeVore 26 August 2018 в 10:43
поделиться

В Visual Studio 2017 вы можете увидеть результат из тестового проводника.

1) В вашем методе проверки Console.WriteLine («что-то»);

2) Запустите тест.

3) В окне тестового проводника нажмите Пропущенный тестовый метод.

4) И нажмите ссылку «Выход».

И нажмите «Выход», вы увидите результат Console.Writeline ().

20
ответ дан user2541924 26 August 2018 в 10:43
поделиться

Попробуйте использовать:

Console.WriteLine()

Вызов Debug.WriteLine будет выполнен только во время определения DEBUG.

Другие предложения use: Trace.WriteLine, но я этого не пробовал.

Существует также опция (не уверен, что VS2008 имеет ее), но вы все равно можете использовать Debug.WriteLine при запуске теста с помощью Test With Debugger в IDE

0
ответ дан VoodooChild 26 August 2018 в 10:43
поделиться
Другие вопросы по тегам:

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