Skip to content

[Bug]: Test class constructors are called before 'BeforeAssembly' and 'BeforeClass' events #6192

@Jydebjerg

Description

@Jydebjerg

Description

It is my understanding, that the documentation states, that lifecycle events are called before test class instantiation.

https://tunit.dev/docs/writing-tests/lifecycle

Expected Behavior

  1. TUnitTestHooks.BeforeEveryAssembly is invoked
  2. TUnitTestHooks.BeforeEveryClass is invoked
  3. The MyTests constructor is invoked twice
  4. MyTests.TestB is invoked
  5. MyTests.TestA is invoked
  6. TUnitTestHooks.AfterEveryClass is invoked
  7. TUnitTestHooks.AfterEveryAssembly is invoked

Actual Behavior

  1. The MyTests constructor is invoked twice
  2. TUnitTestHooks.BeforeEveryAssembly is invoked
  3. TUnitTestHooks.BeforeEveryClass is invoked
  4. MyTests.TestB is invoked
  5. MyTests.TestA is invoked
  6. TUnitTestHooks.AfterEveryClass is invoked
  7. TUnitTestHooks.AfterEveryAssembly is invoked

Steps to Reproduce

namespace YourTestProjectNameHere;

internal static class TUnitTestHooks
{
    [BeforeEvery(Assembly)]
    public static Task BeforeEveryAssembly(AssemblyHookContext context)
    {
        return Task.CompletedTask;
    }

    [BeforeEvery(Class)]
    public static Task BeforeEveryClass(ClassHookContext context)
    {
        return Task.CompletedTask;
    }

    [AfterEvery(Assembly)]
    public static Task AfterEveryAssembly(AssemblyHookContext context)
    {
        return Task.CompletedTask;
    }

    [AfterEvery(Class)]
    public static Task AfterEveryClass(ClassHookContext context)
    {
        return Task.CompletedTask;
    }
}

public class MyTests
{
    public MyTests()
    {
    }

    [Test]
    public Task TestA()
    {
        return Task.CompletedTask;
    }

    [Test]
    public Task TestB()
    {
        return Task.CompletedTask;
    }
}

TUnit Version

1.51.0

.NET Version

net10.0

Operating System

Windows

IDE / Test Runner

Visual Studio

Error Output / Stack Trace

Additional Context

No response

IDE-Specific Issue?

  • I've confirmed this issue occurs when running via dotnet test or dotnet run, not just in my IDE

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions