如何从void测试方法获取字符串?解决void转string类型转换报错
问题解决方法
错误原因
报错cannot implicitly convert type 'void' to 'string'的核心原因有两个:
start()方法的返回类型是void(无返回值),但你试图将它的调用结果赋值给string类型的变量url,C#不允许这种类型转换。start方法内部的link是局部变量,只能在该方法内部访问,外部方法无法直接获取。
解决方案
方案一:将辅助方法改为返回字符串类型
如果start并非独立的测试用例,只是用来提供链接的辅助方法,直接修改它的返回类型为string,并返回链接值,同时移除[Test]特性(测试框架通常不允许测试方法有返回值):
// 改为普通辅助方法,返回链接字符串 public string GetTestLink() { string link = "https://www.w3schools.com/"; return link; } [Test] public void CC1() { IWebDriver driver = new ChromeDriver(); WebDriverWait _wait = new WebDriverWait(driver, TimeSpan.FromSeconds(90)); InitialLogin(driver, _wait); string url = GetTestLink(); driver.Navigate().GoToUrl(url); }
方案二:将链接定义为类的成员变量
如果start是需要独立执行的测试用例(比如用来初始化链接),可以把链接定义为类的成员字段,让两个测试方法都能访问:
// 定义类级别的成员字段 private string _testLink; [Test] public void start() { // 在该测试用例中初始化链接 _testLink = "https://www.w3schools.com/"; } [Test] // 若使用NUnit,可加Order特性确保start先执行 [Order(1)] public void CC1() { IWebDriver driver = new ChromeDriver(); WebDriverWait _wait = new WebDriverWait(driver, TimeSpan.FromSeconds(90)); InitialLogin(driver, _wait); // 直接使用成员字段中的链接 driver.Navigate().GoToUrl(_testLink); }
注意事项
- 若使用方案二,要注意测试用例的执行顺序,部分测试框架(如NUnit)默认不保证执行顺序,需要通过特性(如
[Order])或配置指定顺序,确保start在CC1之前运行。 - 如果链接是固定常量,也可以直接定义为
const string,在CC1中直接使用,无需额外方法。
内容的提问来源于stack exchange,提问作者Krakalien
相关产品推荐
相关产品推荐

