You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm trying to understand how to avoid calling a method like "System.String.Substring()" with ArchUnitNET.
First I have a simple library Lib with static method:
namespace Lib
{
public static class Utility
{
public static string SubString(string input, int position)
{
return input.Substring(position);
}
}
}
Second I have an example console project to show what I want exactly:
namespace Prg
{
internal class Program
{
static void Main(string[] args)
{
// this usage is fine
Console.WriteLine(Lib.Utility.SubString("Hello World", 6));
// this usage should not be possible and should be "reported" by ArchUnit
Console.WriteLine("Hello World".Substring(6));
Console.ReadKey();
}
}
}
And, I have a simple MS unit test as follows:
using ArchUnitNET.Domain;
using ArchUnitNET.Loader;
using static ArchUnitNET.Fluent.ArchRuleDefinition;
namespace LibTest
{
[TestClass]
public class PrgTest
{
private static readonly Architecture Architecture = new ArchLoader().LoadAssemblies(System.Reflection.Assembly.Load("Prg")).Build();
[TestMethod]
public void TestIndexOf()
{
var classesThatCallStringDotSubString = Classes().That().CallAny("System.String.Substring").Should().NotExist();
var result = classesThatCallStringDotSubString.Evaluate(Architecture).ToList();
Assert.IsTrue(result[0].Passed);
}
}
}
I do something wrong because the test does not fail. Can anyone help? Thanks a lot.
BR Torsten
The text was updated successfully, but these errors were encountered:
I'm trying to understand how to avoid calling a method like "System.String.Substring()" with ArchUnitNET.
First I have a simple library Lib with static method:
namespace Lib
{
public static class Utility
{
public static string SubString(string input, int position)
{
return input.Substring(position);
}
}
}
Second I have an example console project to show what I want exactly:
namespace Prg
{
internal class Program
{
static void Main(string[] args)
{
// this usage is fine
Console.WriteLine(Lib.Utility.SubString("Hello World", 6));
}
And, I have a simple MS unit test as follows:
using ArchUnitNET.Domain;
using ArchUnitNET.Loader;
using static ArchUnitNET.Fluent.ArchRuleDefinition;
namespace LibTest
{
[TestClass]
public class PrgTest
{
private static readonly Architecture Architecture = new ArchLoader().LoadAssemblies(System.Reflection.Assembly.Load("Prg")).Build();
}
I do something wrong because the test does not fail. Can anyone help? Thanks a lot.
BR Torsten
The text was updated successfully, but these errors were encountered: