Skip to content

Commit 68d1c30

Browse files
committed
在未匹配到谓词时,返回值和异常相比,林德熙讨论异常胜出
1 parent c4ff552 commit 68d1c30

File tree

1 file changed

+22
-21
lines changed

1 file changed

+22
-21
lines changed

tests/DotNetCampus.CommandLine.Tests/AddHandlerTests.cs

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -172,23 +172,24 @@ public void RegisterHandler_WithMultipleVerbs_MatchesCorrectCommand()
172172
// Assert
173173
Assert.IsNull(capturedAddItem);
174174
Assert.AreEqual("item2", capturedRemoveItem);
175-
}
176-
177-
[TestMethod("2.3. 未提供谓词时不匹配任何命令")]
178-
public void RegisterHandler_WithNoVerbProvided_NoCommandMatched()
175+
} [TestMethod("2.3. 未提供谓词时不匹配任何命令抛出CommandVerbNotFoundException")]
176+
public void RegisterHandler_WithNoVerbProvided_ThrowsCommandVerbNotFoundException()
179177
{
180178
// Arrange
181179
string[] args = ["item3"];
182180
bool addHandlerCalled = false;
183181
bool removeHandlerCalled = false;
184182

185-
// Act
186-
CommandLine.Parse(args, Flexible)
187-
.AddHandler<AddOptions>(_ => addHandlerCalled = true)
188-
.AddHandler<RemoveOptions>(_ => removeHandlerCalled = true)
189-
.Run();
183+
// Act & Assert
184+
var exception = Assert.ThrowsException<CommandVerbNotFoundException>(() => {
185+
CommandLine.Parse(args, Flexible)
186+
.AddHandler<AddOptions>(_ => addHandlerCalled = true)
187+
.AddHandler<RemoveOptions>(_ => removeHandlerCalled = true)
188+
.Run();
189+
});
190190

191-
// Assert
191+
// 确认异常包含正确的谓词信息
192+
Assert.IsTrue(exception.Message.Contains("item3"));
192193
Assert.IsFalse(addHandlerCalled);
193194
Assert.IsFalse(removeHandlerCalled);
194195
}
@@ -304,22 +305,22 @@ public void HandlerException_PropagatedToCaller()
304305
});
305306

306307
Assert.AreEqual(expectedException.Message, exception.Message);
307-
}
308-
309-
[TestMethod("4.2. 未找到匹配的处理器时返回非零退出代码")]
310-
public void NoMatchingHandler_ReturnsNonZeroExitCode()
308+
} [TestMethod("4.2. 未找到匹配的处理器时抛出CommandVerbNotFoundException")]
309+
public void NoMatchingHandler_ThrowsCommandVerbNotFoundException()
311310
{
312311
// Arrange
313312
string[] args = ["unknown-verb"];
314313

315-
// Act
316-
int exitCode = CommandLine.Parse(args, Flexible)
317-
.AddHandler<AddOptions>(_ => { })
318-
.AddHandler<RemoveOptions>(_ => { })
319-
.Run();
314+
// Act & Assert
315+
var exception = Assert.ThrowsException<CommandVerbNotFoundException>(() => {
316+
CommandLine.Parse(args, Flexible)
317+
.AddHandler<AddOptions>(_ => { })
318+
.AddHandler<RemoveOptions>(_ => { })
319+
.Run();
320+
});
320321

321-
// Assert
322-
Assert.AreNotEqual(0, exitCode);
322+
// 确认异常包含正确的谓词信息
323+
Assert.IsTrue(exception.Message.Contains("unknown-verb"));
323324
}
324325

325326
[TestMethod("4.3. 必需属性未赋值时抛出异常")]

0 commit comments

Comments
 (0)