官术网_书友最值得收藏!

The TDD cycle

The TDD technique follows a tenet known as the red-green-refactor cycle, with the red state being the initial state, indicating the commencement of a TDD cycle. At the red state, the test has just been written and will fail when it is run.

The next state is the green state and it shows that the test has passed after the actual application code has been written. Code refactoring is essential to ensure code completeness and robustness. Refactoring will be repeatedly done until the code meets performance and requirement expectations:

At the beginning of the cycle, the production code to run the test against has not been written, so it is expected that the test will fail. For example, in the following code snippet, the IsServerOnline method has not been implemented yet, and when the Test_IsServerOnline_ShouldReturnTrue unit test method is run, it should fail:

public bool IsServerOnline()
{
return false;
}

[Fact]
public void Test_IsServerOnline_ShouldReturnTrue()
{
bool isOnline=IsServerOnline();

Assert.True(isOnline);
}

For the test to pass, you have to implement the production code iteratively. When the following IsServerOnline method is implemented, the Test_IsServerOnline_ShouldReturnTrue test method is expected to pass:

public bool IsServerOnline()
{
string address="localhost";
int port=8034;
SmppManager smppManager= new SmppManager(address, port);
bool isOnline=smppManager.TestConnection();
return isOnline;
}


[Fact]
public void Test_IsServerOnline_ShouldReturnTrue()
{
bool isOnline=IsServerOnline();

Assert.True(isOnline);
}

When the test is run and it passes, showing a green color depending on the test runner you are using, this provides an immediate feedback to you on the status of the code. This gives you confidence and inner joy that the code works correctly and behaves as it is intended to.

Refactoring is an iterative endeavor, where you continuously modify the code you have earlier written to pass the test until it has attained the state of production-ready code and that it fully implements the requirements and will work for all possible use cases and scenarios. 

主站蜘蛛池模板: 高邑县| 安乡县| 南投县| 东乌珠穆沁旗| 晋江市| 岳西县| 乌拉特前旗| 略阳县| 凤台县| 安龙县| 海丰县| 沐川县| 福清市| 揭阳市| 密云县| 垦利县| 昂仁县| 甘德县| 浪卡子县| 化德县| 扎兰屯市| 河西区| 油尖旺区| 嘉善县| 台南市| 兴海县| 长治市| 巴彦县| 金寨县| 肥城市| 嵊州市| 迁西县| 曲周县| 中宁县| 漳平市| 武川县| 大港区| 兴业县| 安阳市| 大名县| 阳西县|