2009-08-28 122 views
1

我已经为VS 2008 C#中的库建立了一个单元测试项目。该库将对命令行参数做出反应。我使用默认参数设置了单元测试的属性 - >调试 - >启动选项,以触发目标库中的特定响应。我的问题是:在C#中调试命令行参数

1)当库代码执行Environment.GetCommandLineArgs()时,它看不到我设置的任何默认参数。我甚至将单元测试项目中的默认参数复制到了库项目的属性中,没有任何效果。我没做什么(对)?

2)是否有编程方法来设置命令行参数?我希望各种测试能够设置参数并观察库的行为。

谢谢你,吉姆

+0

可以肯定的是,您正在运行调试版本吗? – 2009-08-28 15:26:12

+0

我希望如此。我去单元测试项目,选择一个测试方法,使用排水沟中的图标,我选择调试。我在库中分解并通过GetCommandLineArgs()调用。我看到它的参数看起来像测试项目的命令行 - 不是我在“调试启动选项”中设置的参数。不知何故,我需要从“属性”页面“激活”参数。 – 2009-08-28 16:30:31

+0

啊哈。我从args [0]看到ReSharper涉及到: “C:\\ ... \\ JetBrains.ReSharper.TaskRunner.exe” 然后arg [1]是“ipc://0ff1a572-0...cbc4bdde “ 和我期待从我的设置”E = DEVLOPMENT“。 ReSharper正在阻挡我。 – 2009-08-28 16:36:52

回答

2

发现问题。 ReSharper加载项运行它的TaskRunner.exe来执行单元测试。调用TaskRunner时的命令行不考虑调试设置。 JetBrains(制造商)现在意识到这个问题。

2

它并不直接回答你的问题,但我会建议在库中不使用命令行参数。命令行参数应该由可执行文件解析,然后将适当的参数传递给库。在单元测试的情况下,您可以简单地传递测试参数。考虑在GUI应用程序中使用库,其中用户在表单中输入参数而不是命令行参数,或者以两种不同方式使用库两次使用库。

+0

优秀点;你绝对正确。我应该明确指出,图书馆是应用程序的命令行分析器。它将为命令行和.config设置的解释提供通用性。 – 2009-08-28 16:25:54