簡體   English   中英

源發生器測試

[英]Source Generator Testing

我正在嘗試開發一個理論上可以添加到我的項目中的源代碼生成器,並且對於給定的項目,讓它找到標有特定屬性的類,然后為每個生成一個相應的生成文件。

我設置了有效使用GeneratorDriver來實例化和運行生成器並評估其 output 的單元測試。

問題

類存在於從測試項目引用的輔助項目中。 編譯似乎不包括其他項目的語法樹。

我嘗試使用簡單的 program.cs 主體調用CreateCompilation ,並調用.AddReferences(MetadataReference.CreateFromFile(typeof(User).Assembly.Location) ,然后將其傳遞給 in 驅動程序。

在運行時,我的語法樹仍然完全相同(可能是因為我假設引用被視為程序集引用。

我假設在正常情況下,生成器將在作為Analyzer引用的項目的上下文中運行,但是為了我的單元測試,有沒有一種方法可以有效地將編譯設置為另一個項目,或者引用另一個項目(這樣當我遍歷不同的語法樹時,我可以訪問那些在外部程序集中標有屬性的類)?

所以我設法通過創建一個工作區(使用 Microsoft.CodeAnalysis.Workspaces)來解決這個問題,並加載我的其他項目,從中獲得編譯,並將其傳遞給我的GeneratorDriver

我的發電機還沒有 100% 工作,但這絕對讓我跨過了障礙。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM