我有以下代码:
Dim r As Long
Dim c As Long
' 21 targets column U
c = 21
For r = 4 To 50
If Cells(r, c).Value = "Yes" Then
'here I think the process would be to unprotect the sheet, then select from (r,c+1) to (r,c+17), apply the formatting (shade and protection), go to next r and at the end protect the sheet again
如何测试此方法?我想查看三个案例: - 正确的XML - XML不正确 - 不是XML(例如路径中的.bmp文件) 我正在使用Visual Studio测试。
答案 0 :(得分:0)
使用[DeploymentItem]
属性运行测试时,可以部署其他文件。它们将被复制到TestContext.TestDeploymentDir
。
// assume this XML file is in the root of the test project,
// and "Copy to Output Directory" property of the file is set to "Copy always"
const string ValidXmlFileName = "valid.xml";
[TestMethod]
[DeploymentItem(ValidXmlFileName)]
public void Validate_ValidXml_ShouldBeOk() {
string path = Path.Combine(TestContext.TestDeploymentDir, ValidXmlFileName);
// perform test with the deployed file ...
}
答案 1 :(得分:0)
此代码与静态实现问题紧密相关,如果标题和问题让我相信这是XY problem。
要解决此代码的缺点,需要对其进行重构,以将其与实现问题分离。
文档的实际加载和验证可以委托给他们自己关注的问题,如以下示例所示
public interface IDocumentLoader<T> where T : class {
T Load(string path);
}
public interface IXDocumentLoader : IDocumentLoader<XDocument> { }
public class XDocumentLoader : IXDocumentLoader {
public XDocument Load(string path) {
return XDocument.Load(path);
}
}
public interface IDocumentValidator<T> where T : class {
void Validate(T document);
}
public interface IXDocumentValidator : IDocumentValidator<XDocument> { }
public class XDocumentValidator : IXDocumentValidator {
public void Validate(XDocument document) {
XmlSchemaSet schema = new XmlSchemaSet();
schema.Add("", XmlReader.Create(new StringReader("XsdFile")));
document.Validate(schema, null);
}
}
public class Subject {
private IXDocumentLoader loader;
private IXDocumentValidator validator;
public Subject(IXDocumentLoader loader, IXDocumentValidator validator) {
this.loader = loader;
this.validator = validator;
}
public void Foo(string path) {
try {
XDocument document = loader.Load(path);
validator.Validate(document);
//Some logic
} catch (Exception ex) {
//Some logic
}
}
}
原始示例中提供的大部分登录信息都是委派出来的。这样可以单独测试每个方面而不会产生副作用,甚至需要从磁盘加载实际的XDocument
,如果需要的话。
可以仅使用为该测试提供的必要依赖项来测试给定方案。这可用于测试异常被捕获,或者在原始问题中省略的逻辑中的其他内容。
在设计代码时使用SOLID方法可以更容易维护,包括单元测试。